提问人:Dajs 提问时间:1/17/2020 最后编辑:DharmanDajs 更新时间:1/17/2020 访问量:120
PHP SQL STMT SELECT multiple LIKE ?可能吗?
PHP SQL STMT SELECT multiple LIKE ? is it possible?
问:
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 doesn't match number of parameters in prepared statement in
这是错误代码,我正在使用
stmt->prepare, stmt->execute
以此类推。
这适用于一个 LIKE ?(WHERE 名称喜欢?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();
答:
0赞
Akina
1/17/2020
#1
如果要严格地将参数的一个副本传输到查询中(假设您搜索相同的模式),则可以使用
SELECT *
FROM datatable
WHERE CONCAT_WS(CHAR(X), Name,Code,Date,Inserter) LIKE ?
AND ID = '2'
其中 CHAR(x) 是在字段或模式中找不到的任何字符。
评论
0赞
Akina
1/17/2020
@RiggsFolly我看到OP无法理解错误消息。但展示的技术也可能解决他的问题......为什么不通知OP呢?
0赞
RiggsFolly
1/17/2020
你说得好,我最初并不认为这是一种只使用一个参数的方法:)
2赞
RiggsFolly
1/17/2020
#2
您有 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'
评论
WHERE (Name LIKE ? OR Code LIKE ? OR Date LIKE ? OR Inserter LIKE ?) AND ID = '2'
?
?