我似乎无法使用此语句或语句来处理准备好的查询,代码在下面工作正常:
$DBH = getDBH();
$stmt = $DBH->prepare("SELECT a.id, a.title, a.photo FROM tag t INNER JOIN tag_reference atx ON t.tag_id = atx.tag_id
INNER JOIN articles a
ON atx.article_id = a.id
WHERE t.tag_name = 'example'");
$stmt->execute();
$stmt->bind_result($id,$title,$photo);
$stmt->fetch();
但是当我更改t.tag_name = '?'
时,它会给我一个参数数量不匹配的错误。这是不起作用的陈述。
$DBH = getDBH();
$stmt = $DBH->prepare("SELECT a.id, a.title, a.photo FROM tag t INNER JOIN tag_reference atx ON t.tag_id = atx.tag_id
INNER JOIN articles a
ON atx.article_id = a.id
WHERE t.tag_name = '?'");
$stmt->bind_param('s',$example);
$stmt->execute();
$stmt->bind_result($id,$title,$photo);
$stmt->fetch();
有人可以帮忙吗?
答案 0 :(得分:3)
如果用单引号括起来,占位符?
不起作用。在这种情况下,SQL tokenizer将把它作为文字字符串捕获。
将其更改为:
WHERE t.tag_name = ? ");
答案 1 :(得分:2)
使用占位符时,是否需要使用引号?我用过的大多数占位符语言都没有。
WHERE t.tag_name = ?"