我想我知道这个问题的答案,但想得到确认。
如果您有一个简单的更新查询,其中包含where子句,并且where子句中的变量值丢失,这是否意味着每个记录都会更新?
//let's say $name is empty
UPDATE users SET name= 'Jason' WHERE userid = '$name'
is that the same as
UPDATE users SET name= 'Jason' WHERE userid = ''
是否每个记录都会更新的行为?
如果是这样的话,您可以在SQL中添加什么来防止这种潜在的灾难吗?
感谢您的指导。
两个查询都将更新userid
列为空的所有记录。但这并不意味着userid
值等于NULL
的行会受到影响。如果要对NULL
列使用WHERE
,请阅读如何使用NULL值。
如果变量为空,或没有值,或",并且表中没有userid
为空或null的记录,则不会更新任何记录,因为where条件不支持任何记录,但是,如果有任何userid
为空的记录,那么该记录将用您提供给相应列的值更新。