[英]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.