SQL的优点和缺点分析,其中1=1
1。多条件查询中1=1的使用问题例如,如果您执行查询页面,并且可以查询许多选项,并让用户自行选择和输入查询关键字,那么,根据通常查询语句的动态构造,代码一般如下所示:
复制代码代码如下所示:
字符串mysqlstr =选择*从桌子上;
如果(年龄。文本。长度>0)
{
mysqlstr = mysqlstr +年龄+文本时代;
}
如果(地址文本。长度>0)
{
mysqlstr = mysqlstr +地址= + 'address文本;
}
一种假设
如果上述两如果判断的陈述是真实的,那就是,用户输入查询词,然后最终mysqlstr施工动态语句改为:
复制代码代码如下所示:
mysqlstr = SELECT * FROM表年龄= '18'and地址=村在广南县,文山,云南
可以看出,这是一个完整且正确的SQL查询,它可以正确执行,并根据数据库中是否有记录返回数据。
二假说
如果两个语句是不成立的,最终mysqlstr施工动态报表改变为:
复制代码代码如下所示:
mysqlstr =选择*从桌子上
现在,我们来看看这个语句,因为关键字需要使用条件,但是这个语句不存在,所以语句是一个false语句,不会被实现,不仅错误,而且不会对任何数据查询。
上述两个假设代表了实际应用,表明报表结构存在问题,不足以应付灵活多变的查询条件。
两。使用1 = 1的好处
如果我们把上述声明改为:
复制代码代码如下所示:
字符串mysqlstr =选择*从表1 = 1;
如果(年龄。文本。长度>0)
{
mysqlstr = mysqlstr +年龄+文本时代;
}
如果(地址文本。长度>0)
{
mysqlstr = mysqlstr +地址= + 'address文本;
}
现在有两种假设。
一种假设
如果设置了两个if,则语句被更改为:
复制代码代码如下所示:
mysqlstr =选择*从表1 = 1和年龄'18'and地址为广南县文山县广南省村。显然,语句是正确的语句,可以正确执行,如果数据库被记录,它将被查询。
二假说
如果没有设置两个if,则语句将更改为:
mysqlstr =选择*从表1 = 1。现在让我们看看这个陈述。因为1 = 1是一个声明为真,因此,这句话在语法上是正确的,能够正确执行,其功能相当于:
mysqlstr = SELECT * FROM表,返回表中的所有数据。
其含义是,如果用户在多条件查询页面中,不选择任何字段,不输入任何关键字,则将返回表中的所有数据;如果用户在页面中选择字段的一部分和查询关键字的输入部分,则查询用户设置的条件。
在这里,不知道您是否了解,实际上应用的是1=1,不是什么高级应用程序,也不是所谓的智能结构,一种构造一种仅仅满足多条件查询因素的页面不确定性,有权运行动态sql语句。
其中1 = 0;这个条件总是错误的,结果不返回任何数据,只有表结构可以用来快速构建表。
复制代码代码如下所示:
选择从不同的地方* 1 = 0 ;
SELECT语句主要用于读取表的结构而不考虑表中的数据,从而节省了内存,因为它不能保存结果集。
复制代码代码如下所示:
创建表NewTable为SELECT * FROM oldtable 1 = 0;创建一个新表,和新的表结构查询的表结构相同。