Какова наилучшая практика для условных операторов if в запросе mySQL? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть форма, которая используется для фильтрации критериев поиска в пользовательской таблице. В ColdFusion я просто написал бы:

select * from  tbl.users where 1 = 1   
<cfif form.firstname NEQ ''>
    AND firstname LIKE '%#form.firstname#%'
</cfif> 
<cfif form.lastname NEQ ''>
    AND lastname LIKE '%#form.lastname#%'
</cfif> 
<cfif form.useremail NEQ ''>
    AND useremail LIKE '%#form.useremail#%'
</cfif>

(Конечно, все переменные формы будут очищены)

Лучшее, что я могу придумать в PHP, это:

$myString = '';

$firstName  =  mysqli_real_escape_string($conn, $_POST['firstName']);
if (empty($firstName)) {
}else{
    $myString .=  " AND firstName LIKE '%$firstName%'" ;
}
$lastName  =  mysqli_real_escape_string($conn, $_POST['lastName']);
if (empty($lastName)) {
}else{
    $myString .=  " AND lastName LIKE '%$lastName%'" ;
}

Тогда:

$sql ="SELECT * FROM tbl.Users_new WHERE 1=1 $myString" ;

Но я уверен, что есть более эффективный способ сделать это.

У кого-нибудь есть способ получше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...