首页 > 解决方案 > mySQL 查询中条件 if 语句的最佳实践是什么?

问题描述

我有一个用于过滤用户表中的搜索条件的表单。在 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" ;

但是,我确信有一种更有效的方法可以做到这一点。

有人有更好的方法吗?

标签: phpmysqlsql

解决方案


推荐阅读