当我在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'].'%'));
我在做什么错了?
答案 0 :(得分:0)
尝试类似的方法:SELECT * FROM tblData WHERE Address LIKE CONCAT('%',:term,'%') LIMIT 5
答案 1 :(得分:0)
我最初的问题问为什么这个参数化的PDO查询没有返回任何记录:
std::vector<std::vector<int>> lists = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
void editor(int determiner)
{
lists[determiner][5]++;
}
事实证明,以上代码绝对没有错。我的错误是我在下面的$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
我应@LundinCast的要求提供此答案。