【发布时间】:2018-07-28 16:56:28
【问题描述】:
当我在 Google Cloud Shell 中运行此查询时,它运行良好并按预期返回 5 行数据:
SELECT * FROM tblData WHERE Address LIKE '%123 Queen%' LIMIT 5;
但是当我将相同的搜索词 123 Queen 传递给这个参数化 PDO 查询时,它不会返回任何结果:
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$stmt = $conn->prepare("SELECT * FROM tblData WHERE Address LIKE :term LIMIT 5");
$stmt->execute(array(':term' => '%'.$_GET['term'].'%'));
我做错了什么?
【问题讨论】:
-
这行得通吗?
$stmt->execute(array(':term' => '%123 Queen%')); -
谢谢@SeanBright,是的,我稍后在代码中调用
$stmt->fetch():$array = array(); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) AS $x) { $array[] = $x; } -
我尝试使用
$stmt->execute(array(':term' => '%123 Queen%'));,但仍然没有结果。 -
您的语法看起来不错,所以我的另一个想法是您的手动测试和基于 PHP 的测试可能使用不同的数据库,但我不知道。
-
@SeanBright,您的第一条评论是正确的。事实证明,我的原始语法或您建议的测试都没有问题。一旦我在
json_encode语句中使用了正确的变量名,两者都按预期工作。那是我的错误。感谢您帮助我找到答案。
标签: php mysql google-app-engine pdo google-cloud-sql