SQL中“where 1=1”的用法

61次阅读
没有评论

共计 1519 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章给大家分享的是有关 SQL 中“where 1=1”的用法的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

SQL 中 where 1= 1 的用处

解释:

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

这个 1 = 1 常用于应用程序根据用户选择项的不同拼凑 where 条件时用的。

如:web 界面查询用户的信息,where 默认为 1 =1,这样用户即使不选择任何条件,sql 查询也不会出错。如果用户选择了姓名,那么 where 变成了 where 1=1 and 姓名 =‘用户输入的姓名’,如果还选择了其他的条件,就不断在 where 条件后追加 and 语句就行了。

如果不用 1 = 1 的话,每加一个条件,都要判断前面有没有 where 条件,如果没有就写 where …,有就写 and 语句,因此此时用 1 = 1 可以简化了应用程序的复杂度。

例:

如下面代码首先定义 $where=‘1=1’,后面就可以不用去判断是否存在 $where

public function listAction()
 { $get = $this- getQuery();
 $statementBalanceDetailModel = M( Ticket\StatementBalanceDetail 
 $page = isset($get[ page]) ? intval($get[ page]) : 1;
 $pageSize = isset($get[ page_size]) ? intval($get[ page_size]) : 10;
 // 用处
 $where =   1=1  
 $binds = array();
 if (isset($get[ id])   $get[id] !=  ) {
 $where .=   and id = :id 
 $binds[id] = trim($get[ id 
 }
 if (isset($get[ shop_name])   $get[shop_name] !=  ) {
 $where .=   and shop_name = :shop_name 
 $binds[shop_name] = trim($get[ shop_name 
 }
 if (isset($get[ statement_sn])   $get[statement_sn] !=  ) {
 $where .=   and statement_sn = :statement_sn 
 $binds[statement_sn] = trim($get[ statement_sn 
 }
 $where .=   order by id desc 
 $result = $statementBalanceDetailModel- paginate($where, $pageSize, $page, $fields = array(), $binds);
 $sceneryList = $result[ data 
 $total = $result[ total_result 
 $pager = Paginate::web($total, $page, $pageSize);
 $data = array(
  pager  =  $pager,
  sceneryList  =  $sceneryList,
 );
 $this- getView()- assign($data);
 }

感谢各位的阅读!关于“SQL 中“where 1=1”的用法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计1519字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)