我正在使用mysqli
,我有这个查询:
$q = "SELECT col1, col2 FROM `Something` WHERE col2 LIKE '%?%'";
如果我在 PHP 外部用一个词代替 ?
进行查询,同样的查询工作正常。在PHP中,我不能这样做。我得到的错误是:
mysqli_stmt::bind_param(): 变量数与预准备语句中的参数数不匹配[..]
查询在var_dump()
中输出正常,参数本身也是如此。
这是bind_param()
:
$stmt->bind_param("s", $param);
我做错了什么?
这只是标志的位置问题
$q = "SELECT col1, col2 FROM `Something` WHERE col2 LIKE ?";
$stmt->bind_param("s", '%' . $param . '%');
我知道这已经甩掉了很多人,你不是第一个:)
为了让这个工作,我必须这样做(类似于正确答案)......
$param = '%' . $param . '%'
$q = "SELECT col1, col2 FROM `Something` WHERE col2 LIKE ?";
$stmt->bind_param("s", $param );