我想我知道答案,但想得到确认。
如果你有一个带有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中放置什么来防止这种潜在的灾难吗?
感谢您的指导。
答案 0 :(得分:4)
两个查询都将更新userid
列为空的所有记录。但这并不意味着userid
值等于NULL
的行会受到影响。如果您想对WHERE
列使用NULL
,请阅读how to working with NULL values。
答案 1 :(得分:1)
如果变量为空,或者没有值或“”,并且在表上没有userid
为空或空的记录,则不会更新任何记录,因为where-condition会有利没有记录,但是如果有任何记录为空userid
,则记录将使用您提供给相应列的值进行更新。