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

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(); 


蓝山帝景
浏览 144回答 2
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'

九州编程

如果您想严格地将参数的一个副本传输到查询中(假设您搜索相同的模式),您可以使用SELECT * FROM datatable WHERE CONCAT_WS(CHAR(X), Name,Code,Date,Inserter) LIKE ? AND ID = '2'其中 CHAR(x) 是在字段或模式中找不到的任何字符。
打开App,查看更多内容
随时随地看视频慕课网APP