我正在向我的網站添加搜索功能,目前用戶可以按照模型名稱搜索一個項目,例如「100D」,但他們無法搜索品牌,在這種情況下,成爲'佳能'。我想讓用戶搜索'canon 100d',結果顯示出來,目前用戶只能搜索'100d'使用AJAX在多個表格中搜索MYSQLI記錄
我有2個表格,一個是'品牌',一個是'模型',這允許我將品牌信息與模型分開存儲,因爲有一個'品牌'對多'模型'。正因爲如此,我只將品牌'id'存儲在模型表中。
這裏是我的「fetch.php」文件,這是通過AJAX從搜索表單調用,這裏是我搜索在搜索表單根據輸入的型號查詢:
$model_search_query = $cameras_pdo->prepare("SELECT * FROM models WHERE model LIKE :search");
$model_search_query->execute(array(':search' => "%" . $_POST['search'] . "%"));
while ($model_search = $model_search_query->fetch(PDO::FETCH_ASSOC)) {
$brand_search_query = "SELECT brand FROM brands WHERE id =" . $model_search['brand'];
$brand_search = mysqli_fetch_assoc(mysqli_query($cameras, $brand_search_query));
// OUTPUT SEARCH RESULTS HERE
}
?>
以上代碼允許用戶搜索'100d',然後顯示'Canon 100D'結果,因爲我在while循環中有另一個查詢,它可以根據輸入找到品牌名稱。
我希望用戶能夠搜索字符串'canon 100d',即使品牌名稱與模型存儲在不同的表中,它仍會返回結果。
我試圖通過創建另一個查詢來搜索基於輸入的品牌,然後在品牌表中返回品牌ID,然後可以在模型搜索查詢中使用...這不起作用,如果有人知道解決我的問題的方法,將不勝感激。三江源
你似乎混淆PDO與庫MySQLi。看起來你可以交替使用這兩種API,但它不會以這種方式工作 - 你需要堅持一個。哪一個取決於你 - [這篇文章](http://php.net/manual/en/mysqlinfo.api.choosing.php)可以幫助你決定哪一個。重要的是你使用佔位符,並用'prepare()'綁定你的變量,而不是直接將變量注入到查詢字符串中。 – Qirel