2016-12-07 6 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 - 結果セットの次の行をフェッチします。

データ行を有効にするには、fetchAllではなくfetchを使用する必要があります。
このコードを試してください。

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


参考:

1

の下に印刷されたあなたはおそらく、あなたがデータあなたをプッシュすることができ、あなたのforループ、このようにfetch_allfetch_assoc()を使用する代わりにすべきであるように私は、配列を取得する必要がありますあなたの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"に書き込むつもりはないと思います。