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);
そして、あなたは$result
をprint_r()
する必要があります。その結果、array()
構造になります。
PDOのフェッチ文に関するいくつかのより明確な説明。
PDOは異なる形式でクエリ結果を返すために、いくつかの非常に便利な方法があります
fetch()
を - 汎用は、mysql_fetch_arrayと同様の方法をフェッチ()。
fetchAll()
- whileループなしですべての行を取得します。
fetchColumn()
- 配列を最初に取得せずに単一のスカラー値を取得する。
例:
$stmt = $pdo->prepare("SELECT id,name FROM songs WHERE dt=curdate()");
$stmt->execute();
$data = $stmt->fetchAll();
今、私たちは$ data配列内のすべての曲を持っているし、私たちが望むよう私たちは、ページを最新デザインすることができます。
これは、配列を取得しているということは、それが望むものではないことを意味しますか? – e4c5
@ S.Al:最初に、phpmyadminまたは端末で目的の$ idを持つ同じクエリを試してみて、結果がいくつかの行にあるかどうかを確認してください。 – JTheDev
echo $ array; $ arrayが配列の場合、 'Array' 'print_r($ array);'を返します。その内容を見たい場合 – nogad