我有一个表单来更新用户的详细信息,他们不必填写每个字段。因此,它将通过POST将空字符串传递给数据库。这是我的问题:
$q = "UPDATE mdl_user SET firstname='$fname', lastname='$lname', email='$email',
address='$address', city='$city', school='$school', phone1='$phone'
WHERE id='$uid'";
有没有办法让MySQL检查例如$fname
是否为空字符串,如果它为空则不更新该字段?
如果没有,那么我该如何在PHP中执行此操作?
答案 0 :(得分: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'";
答案 1 :(得分:3)
我会这样做
<?php
if ($fname) {
$fname = "firstname='$fname',";
} else {
$fname = '';
}
$q = "UPDATE mdl_user SET $fname lastname='$lname', email='$email', address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'";
?>
但你真的应该担心你的代码有多不安全。
答案 2 :(得分:-2)
首先运行 SELECT 语句并执行 mysql_num_row(),如果这返回值&gt; 0 然后 exit() 强>