在Cloud SQL中使用LIKE语句的PDO参数化查询



当我在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的要求提供此答案。

相关内容

  • 没有找到相关文章

最新更新