sql查询语句中$where="1=1"的含义

时间:2021-01-02 03:39:01

在公司做项目发现,sql语句中有类似这样的sql语句。

$orgid = isset($_GET['orgid']) ? intval($_GET['orgid']) : -1;
$where = "1=1";
$where .= $skey?" and ie_name LIKE '%{$skey}%'":'';
$where .= $orgid!=-1?" and ie_type = {$orgid}":'';
$sql="select id,ie_type,ie_name,creat_time from bas_income_expenditure WHERE {$where} order by id asc";

   其中1=1 是永恒成立的,意思无条件的,也就是说在SQL语句里有没有这个1=1都可以。

	这个1=1常用于应用程序根据用户选择项的不同拼凑where条件时用的。
	如:web界面查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,sql查询也不会出错。如果用户选择了姓名,那么where变成了where 1=1 and 姓名='用户输入的姓名',如果还选择了其他的条件,就不断在where 条件后追加 and语句就行了。就像淘宝一样,先增加一个裤子的条件,在增加一个性别为男的条件,在增加一个价格大于80元之类的条件。如果不用1=1的话,每加一个条件,都要判断前面有没有where 条件,如果没有就写where ...,有就写and语句,因此此时用1=1可以简化了应用程序的复杂度。