13

次のようなSQLクエリがあります。

SELECT * FROM tbl_name WHERE title Like "%:needle%"

このステートメントを使用して MySQL db を手動でクエリすると、機能します。しかし、PDO で使用し、手動でクエリしたのと同じ :needle の値で使用すると、空の結果セットが返されます。

utf8 エンコーディングは動作に影響しますか?

4

4 に答える 4

21

PDOを使用すると、これは次のように実行できます。

$stmt = $db->prepare("SELECT * FROM tbl_name WHERE title LIKE :needle");
$needle = '%somestring%';
$stmt->bindValue(':needle', $needle, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
于 2012-12-12T04:48:50.430 に答える
8

のようにしてみてください

$sql = 'SELECT * FROM tbl_name WHERE title Like ":needle"';

$prep = $dbh->prepare($sql);

$ret = $prep->execute(array(':needle' => '%'.$somestring.'%'));
于 2012-12-12T04:52:12.933 に答える
2

「%」は、ステートメントではなく、変数にある必要があります。変数に「%」を入れれば問題ありません。

'SELECT * FROM tbl_name WHERE title Like ":needle"'

$needle = "%$needle%"; 
于 2012-12-12T04:51:10.073 に答える