PHP SQL STMT选择多个LIKE?可能吗?
php sql连接中存在错误: mysqli_stmt::bind_param():变量的数量与中prepared语句中的参数数量不匹配 这是我正在使用的错误代码PHP SQL STMT选择多个LIKE?可能吗?,php,mysql,sql,select,mysqli,Php,Mysql,Sql,Select,Mysqli,php sql连接中存在错误: mysqli_stmt::bind_param():变量的数量与中prepared语句中的参数数量不匹配 这是我正在使用的错误代码 SELECT * FROM datatable WHERE Name LIKE ? OR Code LIKE ? OR Date LIKE ? OR Inserter LIKE ? AND ID = '2' 等等 只需要一个就可以了,像这样?(其中Name LIKE?和ID='2') 如何替换或解决此问题 真正的代码 s
SELECT *
FROM datatable
WHERE Name LIKE ?
OR Code LIKE ?
OR Date LIKE ?
OR Inserter LIKE ?
AND ID = '2'
等等
只需要一个就可以了,像这样?(其中Name LIKE?和ID='2')
如何替换或解决此问题
真正的代码
stmt->prepare, stmt->execute
如果希望严格地将参数的一个副本传递到查询中(假设搜索相同的模式),可以使用
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();
其中CHAR(x)是在字段或模式中找不到的任何字符 您有4个
?
参数,并且仅绑定一个值
SELECT *
FROM datatable
WHERE CONCAT_WS(CHAR(X), Name,Code,Date,Inserter) LIKE ?
AND ID = '2'
这应该是
$stmt->bind_param("s", $param_term);
这样每个参数?
都会得到一个值
此外,查询还需要括号才能像这样正常工作
$stmt->bind_param("ssss", $param_term,
$param_term,
$param_term,
$param_term);
注意,AND在OR之前。您可能需要
WHERE(Name LIKE?或code LIKE?或Date LIKE?或Inserter LIKE?)和ID='2'
。这只是一个查询语句,您需要添加与errorNope相关的代码块。我确实尝试过这个解决方案,但不起作用。它有相同的错误。请阅读错误消息。这意味着您没有传递正确数量的值来匹配所有的?
显示您的真实代码。您是否确实传递了任何值来替换?
参数您使用了4个占位符。所以你必须给出4个参数。可能是同一个参数重复了4次。@riggsfully我发现OP无法理解错误消息。但展示的技术也可以解决他的问题。。。为什么不通知OP呢?你说得很好,我最初并不认为这是一种只使用一个参数的方法:)
WHERE (Name LIKE ?
OR Code LIKE ?
OR Date LIKE ?
OR Inserter LIKE ? )
AND ID = '2'