SELECT * FROM datatable WHERE Name LIKE ? OR Code LIKE ? OR Date LIKE ? OR Inserter LIKE ? AND ID = '2'php sql连接出错: mysqli_stmt::bind_param(): Number of variables does not match number of parameters in Prepared statement in这是错误代码,我正在使用stmt->prepare, stmt->execute 等等在 php.ini 中。只需一个 LIKE 就可以正常工作?(WHERE Name LIKE ? AND ID = '2')。如何更换或解决此问题?真实的代码if ($stmt = $db->prepare($SearchQuery)) { // Bind variables to the prepared statement as parameters $stmt->bind_param("s", $param_term); // Set parameters $param_term = '%' . $_POST["String"] . '%'; // Attempt to execute the prepared statement if ($stmt->execute()) { $result = $stmt->get_result();
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
你有 4 个?参数,你只绑定一个值
$stmt->bind_param("s", $param_term);
这应该是
$stmt->bind_param("ssss", $param_term,
$param_term,
$param_term,
$param_term);
以便每个参数?都有一个值。
此外,查询将需要括号才能像这样正常工作
WHERE (Name LIKE ?
OR Code LIKE ?
OR Date LIKE ?
OR Inserter LIKE ? )
AND ID = '2'
九州编程
TA贡献1785条经验 获得超4个赞
如果您想严格地将参数的一个副本传输到查询中(假设您搜索相同的模式),您可以使用
SELECT *
FROM datatable
WHERE CONCAT_WS(CHAR(X), Name,Code,Date,Inserter) LIKE ?
AND ID = '2'
其中 CHAR(x) 是在字段或模式中找不到的任何字符。
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报
0/150
提交
取消