PHP PDO准备语句语法问题

时间:2014-01-08 09:36:57

标签: php mysql pdo prepared-statement

我正在尝试在PHP中使用PDO准备好的语句。它似乎工作正常,直到我尝试返回一个带有空格的名称。

例如,我可以返回像苹果这样的名字而没有任何问题,但是我无法为packard bell,Hewlett Packard等返回任何结果。

我已经测试了多个不同的名称,当我在packard bell或Hewlett Packard中硬编码时,查询会按预期返回结果。

以下是我正在使用的预准备语句的查询。

$stmt = $conn->prepare('SELECT * FROM job WHERE client_name = :customer ORDER BY job_date DESC');
$stmt->execute(array(
    'customer' => $customer,
));

当我查询带有空格的名字时,我没有收到任何错误,我会像往常一样转发到结果页面。问题是即使数据库中有行,结果页面也是空的。 有没有我用引号或引号来解决这个问题。

谢谢

2 个答案:

答案 0 :(得分:3)

虽然client_name为“:customer ”,但您必须使用数组'执行:customer'=> $顾客

$stmt = $conn->prepare('SELECT * FROM job WHERE client_name = :customer ORDER BY job_date DESC');
$stmt->execute(array(
    ':customer' => $customer
));

参考:http://www.php.net/manual/en/pdo.prepare.php

答案 1 :(得分:1)

我发现了这个问题。它与准备好的语句无关,由于某种原因,在搜索表单上的下拉选项字段中设置的值只是将客户的名称设置为空白而不是后面的任何内容。我现在必须弄清楚为什么会这样。

谢谢