Php 如果传递的变量为空或null,如何取消设置或使条件为真
我有一个疑问Php 如果传递的变量为空或null,如何取消设置或使条件为真,php,mysql,sql,Php,Mysql,Sql,我有一个疑问 SELECT * FROM table_name WHERE id = '$id' 如果$id为空或空,则我需要从id为非空的表中获取所有数据 我已经试过了 SELECT * FROM table_name WHERE ( ('$id' != '' AND id = '$id') OR ('$id' = '' AND id IS NOT NULL) ) 但是在没有if条件的情况下寻找更好的解决方案,因为我有很多和条件 提前感谢…试试这个: 选择*
SELECT * FROM table_name WHERE id = '$id'
如果
$id
为空
或空
,则我需要从id
为非空
的表中获取所有数据
我已经试过了
SELECT
*
FROM
table_name
WHERE
(
('$id' != '' AND id = '$id')
OR
('$id' = '' AND id IS NOT NULL)
)
但是在没有
if
条件的情况下寻找更好的解决方案,因为我有很多和
条件
提前感谢…试试这个:
选择*
从表\u名称
其中(id='$id'或$id为NULL或TRIM($id)='')
如果$id
不为null且不为空,则将根据id
字段对其进行检查。如果$id
为null或空,则忽略筛选器并返回所有行
更新
选择*
从表\u名称
在哪里(
(如果(修剪($id),“”)为空且id不为空,则为空)或
id=$id
)
您可以使用php
本身来完成技巧,例如:
$sql = 'SELECT * FROM table_name where id is not null';
if($id){
$sql .= ' and id = '.$id;
}
非常感谢@Akina的评论 这是解决方案
SELECT*FROM table\u name其中id=COALESCE(NULL如果($id,),id)
认为此代码易受攻击。对于NULL,您可以使用其中id=COALESCE($id,id)
。请注意-没有ticks-wrapped参数,它们会将NULL从“未知”转换为确定的4字符字符串文字。@Akina还需要空检查…如果是,请使用其中id=COALESCE(NULLIF($id',),id)
。空字符串和空字符串在本例中都表示“全部返回”。@Akina is$id
需要任何引号…但是在没有if条件的情况下寻找更好的解决方案,因为我有很多条件,我需要从id
为notnull
的表中获取所有数据,上面的查询将获取所有数据,包括id
isnull
如果$id
为空,那么或id=$id
呢