PHP/MYSQL:where子句中缺少值的更新查询


PHP/MYSQL: Update Query where value is missing from WHERE clause

我想我知道这个问题的答案,但想得到确认。

如果您有一个简单的更新查询,其中包含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为空的记录,那么该记录将用您提供给相应列的值更新。