关于数据库的疑难点(持续更新中

本文探讨了MySQL中赋值操作符:=和比较操作符=的区别,特别是在设置变量和查询上下文中的不同行为。举例说明了在行号计数场景下如何正确使用:=。同时,解释了SQL语句中的'or 1=1'或'or 1=1#'是如何导致SQL注入,从而允许攻击者绕过认证并获取所有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.mysql中:=和=的区别??

(1)=
只有在set和update时才是和:=一样,赋值的作用,其它都是等于的作用。鉴于此,用变量实现行号时,必须用:=
(2):=
不只在set和update时时赋值的作用,在select也是赋值的作用。

@num:=@num+1,:=是赋值的作用,所以,先执行@num+1,然后再赋值给@num,所以能正确实现行号的作用。
@num=@num+1,此时=是等于的作用,@num不等于@num+1,所以始终返回0,如果改为@num=@num,始终返回1了。mysql数据库中,用1表示真,0表示假。

2.怎么理解SQL语句中的’or 1=‘1或者’ or 1=1#??

select * from tablename where username = 'parameter1' and passward = 'parameter2';
//parameter1拼接'or 1='1'成为'parameter1' or 1='1'
select * from tablename where username = 'parameter1' or 1='1' and passward = parameter2;
//相当于是
select * from tablename;
//直接获取该表所有的数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值