php - 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" ;
但是,我确信有一种更有效的方法可以做到这一点。
有人有更好的方法吗?
解决方案
推荐阅读
- python - Pyspark:从随机项目函数创建一个集合
- javascript - 如何使用 javaScript 为所有 td 添加相同的类
- next.js - 为什么 NextApiRequestCookies, parseBody 来自 NextJS 在 'next/dist/server/api-utils'
- python - pm2 在加载机器人时崩溃。有没有办法将孤立的进程添加回它?
- r-markdown - pdf输出中的彩色列
- .net-core - 将 IHostedService 转换为微服务
- javascript - 包装异步函数的函数的 TypeScript 类型定义
- javascript - 我无法安装 npm Mac m1 Monterey
- powerbi - Power BI 运行总 DAX 计算
- python - 将python字典排序到等间隔的槽中