我正在處理多個輸入表單的搜索表單。只插入一個搜索條件時,如果工作正常。但是,當使用兩個時,它不會。我看到這個缺陷,但我不知道如何解決它。我試過循環等,但問題仍然存在。PHP/MySQLI多重搜索[2]
$sql = 'SELECT product_id, product_title FROM product WHERE ';
$where = array();
$values = array();
$types = '';
if (!empty($_GET['searchText'])) {
$where[] = 'product_title = ?';
$values[] = $_GET['searchText'];
$types .= 's';
}
if (!empty($_GET['searchCategorySelect'])) {
$where[] = 'product_categoryid = ?';
$values[] = $_GET['searchCategorySelect'];
$types .= 's';
}
$sql .= implode(' AND ',$where);
$search_stmt = $mysqli->prepare($sql);
$values = implode("", $values);
$search_stmt->bind_param($types, $values);
$search_stmt->execute();
$search_stmt->bind_result($product_id, $product_title);
etc...
的bind_param必須獲得PARAMS適當數量的,因爲會有提前超過一個當兩個或多個搜索審覈規定使用..
感謝。
編輯: 這是錯誤信息,我得到: 「在類型定義字符串元素不匹配綁定變量的數數。」
EDIT2:
回聲$ SQL的結果(有兩個標準):
SELECT product_id,product_title FROM product WHERE product_title =? AND product_categoryid =?
迴響在$類型的結果:
SS
哪個是正確的藏漢所以查詢是否按預期運行。
的事情是,$值將是一個字符串,包括:
[searchCondition1] [SearchCondition2]
例如:如果我在類別車輛上沃爾沃搜索回波$值將輸出Volvo2其中圖2是categoryId。
Hacky可以工作:'SELECT product_id,product_title FROM product WHERE(1 =?OR product_title =?)AND(1 =?OR product_categoryid =?)'。將0或1綁定到僞選擇器來打開/關閉它們 –
在我看來,使用'echo'在準備好聲明之後? – hjpotter92
你能回顯$ sql嗎? – FreudianSlip