我試過了很多不同的變化,我找不出爲什麼這不會返回我的預期結果。這是我現在的代碼。我已經在LIKE之後的SQL語句中嘗試了許多變量,並且沒有按預期返回數組。我還驗證了$ search變量的確有正確的字符串。Mysql沒有返回預期的結果
的index.php動開關(此工作正常):
case 'search_result':
$search = filter_input(INPUT_POST, 'searchBar');
$results = search_books($search);
if($results == NULL){
include('/view/search_null.php');
}else {
include('/view/search_results.php');
}
break;
我的數據庫搜索功能:
function search_books($search_word){
global $db;
$query = ' SELECT * FROM books
WHERE bookTitle LIKE :search_word ';
$statement = $db->prepare($query);
$statement->bindValue(":search_word", $search_word);
$statement->execute();
$results_search = $statement->fetchAll();
$statement->closeCursor();
return ($results_search);
}
每次$結果爲NULL,並踢我到我的網頁,不返回任何結果,即使它應該返回結果。在該頁面上,我確認$ search中有正確的單詞,而$ results和$ results_search的數組大小爲0.
(是的,我知道我應該清理$ search,這不會上線它只是一個分配)
嘗試從查詢中刪除'''(引號),並用':search_word'替換'$ search_word'。看看[帶佔位符的示例](http://php.net/manual/en/pdostatement.bindvalue.php#refsect1-pdostatement.bindvalue-examples) – FirstOne
沒有通配符的'Like'與an =相同。你需要添加/連接通配符到你的搜索字符串嗎? – xQbert
是的,我發現後,我發現。這是很多迭代(:search_word)之一,沒有奏效。改變了它,我仍然有同樣的問題。 – Alex