1

假设$search是来自用户输入的字符串,并且$db是有效的 PDO 引用。

据我了解,以下块是首选并且应该可以工作:

$imageStatement = $db->prepare("SELECT
images.whatever
FROM images
WHERE images.title LIKE :titleSearch OR images.description LIKE :descriptionSearch");
$imageStatement->bindValue(':titleSearch', "%{$search}%");
$imageStatement->bindValue(':descriptionSearch', "%{$search}%");
$images = $imageStatement->fetchAll();

它返回 0 个结果,而以下返回预期回报:

$search = $db->quote("%{$search}%");
$images = $db->query("SELECT
images.whatever
FROM images
WHERE images.title LIKE {$search} OR images.description LIKE {$search}")->fetchAll();

我究竟做错了什么?

4

1 回答 1

7

您从未执行过您的 PDO 语句。绑定参数后,execute在检索结果之前调用。

$imageStatement->bindValue(':titleSearch', "%{$search}%");
$imageStatement->bindValue(':descriptionSearch', "%{$search}%");
$imageStatement->execute(); //ADD THIS STATEMENT
$images = $imageStatement->fetchAll();

PDO 的query函数不需要你调用execute,因为它不是参数化查询。

于 2013-04-12T20:23:49.337 回答