複数の入力フォームを処理する検索フォームに取り組んでいます。1つの検索条件のみが挿入された場合、正常に機能する場合。しかし、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...
2つ以上の検索条件が使用されると、1つ以上のパラメーターが存在するため、bind_paramは適切な数のパラメーターを取得する必要があります。
前もって感謝します。
編集:これは私が受け取るエラーメッセージです:「型定義文字列の要素の数がバインド変数の数と一致しません。」
EDIT2:
echo $ sqlの結果(2つの基準を使用):
SELECT product_id、product_title FROM product WHERE product_title =?AND product_categoryid =?
エコー$typesの結果:
ss
どちらも正しいので、クエリは意図したとおりに機能します。
つまり、$ valuesは1つの文字列になり、次のものが含まれます。
[searchCondition1] [SearchCondition2]
たとえば、カテゴリVehiclesでVolvoを検索すると、echo$valuesはVolvo2を出力します。2はcategoryIdです。