占位符在准备好的语句中不起作用



我有一个正在工作的查询,但是当我试图使用准备好的语句用占位符替换变量时,会出现问题。我在这里错过了什么?

$sql = "
SELECT t1.tbl, 
COALESCE(t2.title, tx_ctr.Name) AS title
FROM aux
LEFT JOIN tx_chs
ON t1.tbl = 't2' AND t1.rid = t2.cid  AND t2.county = :county
LEFT JOIN tx_ctr
ON t1.tbl = 't3' AND t1.rid = t3.id  AND t3.county = :county
WHERE t1.tag LIKE :tag
AND COALESCE(t2.cid, t3.ttl) IS NOT NULL
GROUP BY title ASC";
$qtag = '"%'.$tag.'%"';
$stmt  = $db->prepare($sql);
$stmt->execute(['county' => $cnty, 'tag' => $qtag]);
$data = $stmt->fetchAll();

您错过了":"对于您的命名参数

你的执行人声明应该是这样的:

$stmt->execute([':county' => $cnty, ':tag' => $qtag]);

最新更新