Поиск MySQL от нескольких пользователей, предоставленных где предложение – исправление и лучший алгоритм

Я хочу запустить поисковый запрос, где у меня есть предложение where . и несколько зависит от аргумента пользователя.

например, я имею в виду, что поиск может зависеть от столбца 1 столбца, 2 столбца, 3 столбца или 6 в моем случае, и я не хочу запускать оператор if-elseif-else со всей вероятностью столбца. Итак, я только что создал функцию ниже, но я застрял, and это происходит между multiple column search . Ниже мой код: –

 function listPlayer($player="player_guest", $group="group_guest", $weapon="weapon_guest", $point="point_guest", $power="level_guest", $status="status_guest") { $lePlayer = (isset($player) && $player != "player_guest") ? 'player= '.$mysqli->real_escape_string($player).' and' : ''; $leGroup = (isset($group) && $group != "group_guest") ? 'group= '.$mysqli->real_escape_string($group).' and' : ''; $leWeapon = (isset($weapon) && $weapon != "weapon_guest") ? 'weapon= '.$mysqli->real_escape_string($weapon).' and' : ''; $lePoint = (isset($point) && $point != "point_guest") ? 'point= '.$mysqli->real_escape_string($point).' and' : ''; $lePower = (isset($power) && $power != "level_guest") ? 'level= '.$mysqli->real_escape_string($power).' and' : ''; $leStatus = (isset($status) && $status != "status_guest") ? 'status= '.$mysqli->real_escape_string($status).' and' : ''; $query = "Select pid, name from game where {$lePlayer} {$leGroup} {$leWeapon} {$lePoint} {$lePower} {$leStatus} "; $runQuery = $mysqli->query($query); } 

но проблема есть and в конце. Если я использую их, то у меня есть дополнительные and в конце, и если я их не использую, это снова ошибка.

Может кто-нибудь помочь мне исправить и найти лучший способ сделать это.

Обновление: мой код обновления, который работает, если кому-то нужен. Благодаря Barmar

 function listPlayer($player="player_guest", $group="group_guest", $weapon="weapon_guest", $point="point_guest", $power="level_guest", $status="status_guest") { $lePlayer = (isset($player) && $player != "player_guest") ? 'player= '.$mysqli->real_escape_string($player) : '' ; $leGroup = (isset($group) && $group != "group_guest") ? 'group= '.$mysqli->real_escape_string($group) : '' ; $leWeapon = (isset($weapon) && $weapon != "weapon_guest") ? 'weapon= '.$mysqli->real_escape_string($weapon) : '' ; $lePoint = (isset($point) && $point != "point_guest") ? 'point= '.$mysqli->real_escape_string($point) : '' ; $lePower = (isset($power) && $power != "level_guest") ? 'level= '.$mysqli->real_escape_string($power) : '' ; $leStatus = (isset($status) && $status != "status_guest") ? 'status= '.$mysqli->real_escape_string($status) : '' ; $condition_array = ( $lePlayer , $leGroup , $leWeapon , $lePoint , $lePower , $leStatus) $condition_stirng = implode(' and ', $condition_array); $query = "Select pid, name from game where ".$condition_stirng; $runQuery = $mysqli->query($query); } 

Обновить:

Я получил почту от кого-то по электронной почте, в которой говорится, что мой код уязвим для SQL Injection. Здесь это POC http://www.worldofhacker.com/2013/09/interesting-sql-vulnerable-code-even.html

благодаря