繁体   English   中英

Cloud SQL中带有LIKE语句的PDO参数化查询

[英]PDO parameterized query with a LIKE statement in Cloud SQL

当我在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'].'%'));

我究竟做错了什么?

尝试如下操作: SELECT * FROM tblData WHERE Address LIKE CONCAT('%',:term,'%') LIMIT 5

我最初的问题是,为什么此参数化的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'].'%'));

$array = array();
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) AS $x) {
   $array[] = $x;
}

事实证明,以上代码绝对没有错。 我的错误是我在下面的json_encode语句中引用了错误的变量名。 当我应该这样引用$array时,我错误地提到了array

$array = $array ?: array('Not Found');
echo json_encode($array);

我应@LundinCast的要求提供此答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM