准备好的查询,错误的变量数量!=参数数量错误

时间:2014-01-31 00:44:55

标签: php mysql mysqli prepared-statement sql-like

MySQL开始让我发疯。几乎每次我收到错误时,抛出的错误的描述都与导致错误的错误完全不同。

在这种情况下,我正在尝试执行以下操作:

$stmt = $mysqli->prepare("SELECT tag_name 
                              FROM tags 
                              WHERE tag_name LIKE '?%';");
$stmt->bind_param('s',$tag_string);

MySQL查询本身在手动执行时工作正常,但是当我尝试在上面动态绑定值时,我得到以下错误:

Number of variables doesn't match number of parameters in prepared statement

哪个不是真的。谁能告诉我这里发生了什么?

2 个答案:

答案 0 :(得分:2)

你不能像这样连接它,因为占位符占有完整值的位置,而不是它的一部分。

正确的查询看起来像

... LIKE CONCAT(?, '%')

答案 1 :(得分:1)

更改此

WHERE tag_name LIKE '?%';");

到此

WHERE tag_name LIKE ?");