簡體   English   中英

PHP SQL STMT SELECT 多個 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 does not match number of parameters in Prepared statement in

這是錯誤代碼,我正在使用

stmt->prepare, stmt->execute 

等等。

這僅適用於一個 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(); 

你有 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) 是在字段或模式中找不到的任何字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM