如何防止MySQL使用空字符串更新列?

use*_*572 4 php mysql validation

我有一个表单来更新用户的详细信息,他们不必填写每个字段.因此,它将通过POST将空字符串传递给数据库.这是我的查询:

$q = "UPDATE mdl_user SET firstname='$fname', lastname='$lname', email='$email',
      address='$address', city='$city', school='$school', phone1='$phone'
      WHERE id='$uid'";
Run Code Online (Sandbox Code Playgroud)

有没有办法让MySQL检查例如$fname是否为空字符串,如果它为空则不更新该字段?

如果没有那么我应该如何在PHP中执行此操作?

Ale*_*x L 10

您可以对需要检查的每个字段使用IF语句.例如 :

$q = "UPDATE mdl_user SET firstname=IF(LENGTH('$fname')=0, firstname, '$fname'), lastname=IF(LENGTH('$lname')=0, lastname, '$lname'), email=IF(LENGTH('$email')=0, email, '$email'), address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'";
Run Code Online (Sandbox Code Playgroud)

  • 你好.IF(<YOUR_CONDITION>,<VALUE_IF_TRUE>,<VALUE_IF_FALSE>).因此,如果字符串长度= 0,则不要更改它. (2认同)