我創建了一個腳本來搜索數據庫中的特定配置文件。搜索腳本中的Mysql錯誤
if(!empty($playerLastName)){
$searchQuery .= 'WHERE playerLastName LIKE "%' . $playerLastName . '%" AND playerStatus = 1';
}
if(!empty($playerAge)){
$searchQuery .= (!empty($searchQuery) ? ' AND ' : 'WHERE ') . 'playerAge = "' . $playerAge . '"';
}
if(is_numeric($playerSex)){
$searchQuery .= (!empty($searchQuery) ? ' AND ' : 'WHERE ') . 'playerSex = ' . $playerSex .'" AND playerStatus = 1';
}
if(!empty($playerPosition)){
$searchQuery .= (!empty($searchQuery) ? ' AND ' : 'WHERE ') . 'playerPosition = "' . $playerPosition . '" AND playerStatus = 1';
}
if(!empty($playerCitizenship)){
$searchQuery .= (!empty($searchQuery) ? ' AND ' : 'WHERE ') . 'playerCitizenship = "' . $playerCitizenship . '" AND playerStatus = 1';
}
到目前爲止,這麼好。這個代碼字符串:
if (is_numeric ($ playerSex)) {
$ SearchQuery. = (! empty ($ SearchQuery)? 'AND': 'WHERE'). 'playerSex ='. $ playerSex;
顯示玩家根據性別,但如果我補充一下:
'"AND playerStatus = 1';
$ SearchQuery. = (! empty ($ SearchQuery)? 'AND': 'WHERE'). 'playerSex ='. $ playerSex .'"AND playerStatus = 1';
我得到這個錯誤:
You have an error in your SQL syntax; check the manual That corresponds to your MySQL server version for the right syntax to use near '"AND playerStatus = 1' at line 1.
我不明白爲什麼: - (
我建議呼應'$ searchQuery'。我懷疑它看起來不像你想象的那樣。 – andrewsi
用空格替換''' –
您可能還想考慮將每個單獨的搜索選項放入一個數組中;然後對該數組進行插值以生成您的SQL語句,這使代碼更容易維護,並且更容易閱讀。 – andrewsi