我正在尝试使用这样的(新手)代码进行简单的搜索过程:
$prep->prepare("SELECT * FROM details WHERE id REGEXP '?'");
$prep->bind_param("s", $search_query);
它给了我这个警告:
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
我猜这可能是因为问号也用于 RegExp(可选的前一个字符)。
关于如何在准备好的语句中使用 REGEXP(没有冲突的问号)有什么想法吗?
谢谢。
最佳答案
去掉 ?
两边的单引号。您的代码应为:
$prep->prepare("SELECT * FROM details WHERE id REGEXP ?");
$prep->bind_param("s", $search_query);
就目前而言,您正在传递一个参数,但单引号中的 ?
被视为字符串,而不是参数标记。
关于php - 在 PHP 中的 mysqli 准备语句中使用 REGEXP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21890498/