【发布时间】:2020-05-04 04:35:59
【问题描述】:
SELECT *
FROM datatable
WHERE Name LIKE ?
OR Code LIKE ?
OR Date LIKE ?
OR Inserter LIKE ?
AND ID = '2'
php sql连接出错: mysqli_stmt::bind_param(): 变量数与预准备语句中的参数数不匹配
这是错误代码,我正在使用
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();
【问题讨论】:
-
请注意 AND 在 OR 之前。你可能想要
WHERE (Name LIKE ? OR Code LIKE ? OR Date LIKE ? OR Inserter LIKE ?) AND ID = '2'。 -
这只是一个查询语句,你需要添加与错误相关的代码块
-
不。我确实尝试了这个解决方案,但它不起作用。它有同样的错误。
-
请阅读错误信息。这表示您没有传递正确数量的值来匹配所有
?向我们展示您的真实代码。您实际上是否传递了任何值来替换?参数 -
您使用了 4 个占位符。所以你必须给出 4 个参数。也许相同的参数 4 次。
标签: php mysql sql select mysqli