为了账号安全,请及时绑定邮箱和手机立即绑定

PHP SQL STMT 选择多个 LIKE ?可能吗?

PHP SQL STMT 选择多个 LIKE ?可能吗?

PHP
蓝山帝景 2022-07-22 19:35:58
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'


查看完整回答
反对 回复 2022-07-22
?
九州编程

TA贡献1785条经验 获得超4个赞

如果您想严格地将参数的一个副本传输到查询中(假设您搜索相同的模式),您可以使用


SELECT * 

FROM datatable 

WHERE CONCAT_WS(CHAR(X), Name,Code,Date,Inserter) LIKE ? 

AND ID = '2'

其中 CHAR(x) 是在字段或模式中找不到的任何字符。


查看完整回答
反对 回复 2022-07-22
  • 2 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信