2016-09-29 20 views
0

データベースに格納されている日付のリストを配列に配置しようとしています。私は次の機能を試してみましたが、私は "アレイ"を取り戻すだけです。私は何が間違っているのか、または日付を取得する別の方法があるかどうかはわかりません。データベースの日付を配列に格納する

function getdate($id) { 

    $select = $this->db->query("select * from dates where user_id= '$id' "); 
    $result_array = array(); 

    while($row = $select->fetch(PDO::FETCH_ASSOC)){ 
     $result_array[] = $row['date']; 
    } 

    return $result_array; 

} 
+0

これは、配列を取得しているということは、それが望むものではないことを意味しますか? – e4c5

+0

@ S.Al:最初に、phpmyadminまたは端末で目的の$ idを持つ同じクエリを試してみて、結果がいくつかの行にあるかどうかを確認してください。 – JTheDev

+0

echo $ array; $ arrayが配列の場合、 'Array' 'print_r($ array);'を返します。その内容を見たい場合 – nogad

答えて

1

PDO statementsを使用している間は、PDOがSQLインジェクションを回避するのに十分な手順に従うことができます。しかし、コード内でプロセスをフォローアップしていません。バインドパラメータの使用をお勧めします。

注:コードはfetchステートメント以外は正常に動作します。結果のクエリからすべてのデータを取得できるように、fetchAll();にする必要があります。

この場合、fetchAll();を使用してDBから複数行の出力を取得する必要があります。または、出力の1行を取得する場合、コードは正常に表示されます。

ソリューションワン:

それはSQLインジェクションを避けるようにするには、関数の中でバインドパラメータを使用することができます。

のfunctions.php

function getdate($id) 
{ 
$select = $conn->prepare("SELECT `date` FROM `dates` WHERE user_id= :id "); 
$select->bindValue(':id', $id, PDO::PARAM_INT); 
$select->execute(); 
$result = $select->fetchAll(PDO::FETCH_ASSOC); 
return $result; 
} 

その他のファイル次のような関数呼び出しを取得することができます。

$result = getdate(3); 

そして、あなたは$resultprint_r()する必要があります。その結果、array()構造になります。

PDOのフェッチ文に関するいくつかのより明確な説明。

PDOは異なる形式でクエリ結果を返すために、いくつかの非常に便利な方法があります

  1. fetch()を - 汎用は、mysql_fetch_arrayと同様の方法をフェッチ()。
  2. fetchAll() - whileループなしですべての行を取得します。
  3. fetchColumn() - 配列を最初に取得せずに単一のスカラー値を取得する。

例:

$stmt = $pdo->prepare("SELECT id,name FROM songs WHERE dt=curdate()"); 
$stmt->execute(); 
$data = $stmt->fetchAll(); 

今、私たちは$ data配列内のすべての曲を持っているし、私たちが望むよう私たちは、ページを最新デザインすることができます。

1

複数の行が必要な場合は、「fetchAll」にする必要があります。また、必要なものがすべて必要ない場合は、必要な列を取得するだけです。

この

fetchAllのためのPHP PDOのドキュメントから変更されて、私がしますprint_rが配列のようにあなたがしてアクセスができますどのように見えるかを紹介します
$sth = $dbh->prepare("SELECT date FROM dates WHERE user_id= :userid "); 
$sth->bindValue(':userid', $id, PDO::PARAM_INT); 
$sth->execute(); 
$result = $sth->fetchAll(PDO::FETCH_ASSOC); 
print_r($result); 

...自分のユーザーIDが整数であると仮定しましたそれはノーガッドが言うように。

関連する問題