PHP SQL编写的select查询没有返回任何内容

时间:2017-08-10 16:54:32

标签: php mysql sql pdo

当我运行下面的代码时,它什么都不返回。当我在“?”的位置显式键入一个字符串时,它将返回预期的结果,但是到目前为止,使用准备好的版本对我来说并不起作用。我不相信存在任何版本问题,因为过去使用INSERT查询的预准备语句对我有用。准备好的声明可能会出现什么问题?

$pdo = new PDO("mysql:host=localhost;dbname=database", $user, $pass);
$sql = "SELECT * FROM table WHERE column LIKE '%?%';";
$stmt = $pdo->prepare($sql);
$stmt->execute(array($_GET['searchterm']));
$results = $stmt->fetchAll();
print_r($results);

1 个答案:

答案 0 :(得分:0)

您正在准备该值,因此它的行为就像您只是将字符串放在查询中一样。

准备字符串时,您无需添加"',即可完成。您需要将%添加到要转义的值中。

$pdo = new PDO("mysql:host=localhost;dbname=database", $user, $pass);
$sql = "SELECT * FROM table WHERE column LIKE ?;";
$stmt = $pdo->prepare($sql);
$stmt->execute(array("%{$_GET['searchterm']}%"));
$results = $stmt->fetchAll();
print_r($results);