2016-12-07 119 views
0

我试图从查询中获取多维数组,出于某些原因无法使用。从查询中获取多维数组

我使用查询从mysql中检索数据。

$sql = "SELECT Id, UserID, TimeAction, Command FROM users_checked WHERE UserId = 4 AND date(TimeAction) = '2016-12-05 '"; 

$q=$conn->query($sql); 

$data = array(); 

    while($r=$q->fetchAll((PDO::FETCH_ASSOC))){ 
     $data[]=$r; 
    } 

阵列输出 array output

我应该得到阵列像印刷低于

$data = array(
     array(
      "Id" => "1", 
      "UserID" => "1", 
      "TimeAction" => "2016-11-29 08:00:00", 
      "Command" => "Prijava" 
     ), 
     array(
      "ID" => "1", 
      "USERID" => "1", 
      "TimeAction" => "2016-11-29 10:05:14", 
      "Command" => "Odjava" 
     ), 
     array(
      "Id" => "1", 
      "UserID" => "1", 
      "TimeAction" => "2016-11-29 12:22:14", 
      "Command" => "PoslovniIzlazak" 
     ), 
     array(
      "ID" => "1", 
      "USERID" => "1", 
      "TimeAction" => "2016-11-29 13:32:14", 
      "Command" => "Prijava" 
     ), 
     array(
      "ID" => "1", 
      "USERID" => "1", 
      "TimeAction" => "2016-11-29 16:00:00", 
      "Command" => "Odjava" 
     ), 
    ); 
+0

像你想你有一个数组,但浏览器的表现就像是你通过图片向我们展示。你可以'var_dump()'来查看你想要的数组。 –

回答

1

fetchAll - 返回包含所有其中作为fetch结果集中的行的阵列 - 从结果集中获取的下一行。

因此,如果您想要数据行明智,您必须使用fetch而不是fetchAll。
试试这个代码。

while ($r = $q->fetch(PDO::FETCH_ASSOC)) 
{ 
    $data[] = $r; 
} 


参考:

1

你或许应该使用fetch_assoc()而不是fetch_all在for循环,这样你可以把你的数据想要将你的数组放入你的mysql查询结果的每一行。
它应该是这样的:

$data = array(); 
while ($row = $r->fetch_assoc()) { 
    $row_array = array(
     "Id" => row['Id'], 
     "UsedID" => row['UserID'], 
     "TimeAction" => row['TimeAction'], 
     "Command" => row['Command'] 
    ); 
    array_push($data, $row_array); 
} 

请注意我没有测试的代码,我被头这样做。 此外,我猜你并不是想在你的例子中把所有的ID都写成“1”。