2016-12-07 11 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 в вашей для петли, таким образом, вы можете нажать на необходимые вам данные захотите в свой массив для каждой строки вашего результата запроса 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); 
} 

Пожалуйста, обратите внимание, я не проверял код, я делаю это по голове. Кроме того, я предполагаю, что вы не хотели писать все идентификаторы в «1» в вашем примере.

Смежные вопросы