У меня есть форма, которая используется для фильтрации критериев поиска в пользовательской таблице. В 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" ;
Но я уверен, что есть более эффективный способ сделать это.
У кого-нибудь есть способ получше?