我创建了一个脚本来搜索数据库中的特定配置文件。
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';
我收到此错误:
您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行的“AND MANStatus = 1”附近使用正确的语法。
我不明白为什么: - (
答案 0 :(得分:2)
删除
开头的双引号'"AND playerStatus = 1';
^---------------------------------here
并用空格替换它。
答案 1 :(得分:0)
除了额外的引号之外,您可能会在playerSex
之前的“AND”或“WHERE”之后错过一个空格。它最终会像目前写的ANDplayerSex
一样结束。
答案 2 :(得分:0)
该代码存在许多可能的问题。
首先是:
if(!empty($playerLastName)){
$searchQuery .= 'WHERE playerLastName LIKE "%' . $playerLastName . '%" AND playerStatus = 1';
}
你没有在WHERE
之前放置空格,因此根据$searchQuery
的前一部分它可能不起作用 - 你应该在这里添加空格。
您使用的所有其他部分也是如此:
(!empty($searchQuery) ? ' AND ' : 'WHERE ')
在这里你还没有在WHERE
之前放置空间 - 你应该这样做。
造成问题的最后一件事是:
if(is_numeric($playerSex)){
$searchQuery .= (!empty($searchQuery) ? ' AND ' : 'WHERE ') . 'playerSex = ' . $playerSex .'" AND playerStatus = 1';
}
您在"
playerSex =
)
所以最终的代码应该是这样的:
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';
}
编辑我故意错过了你问题的某些部分,因为看起来你错了(例如你不能用$ SearchQuery
作为变量)但我认为这是回答你的问题。