mysql将列更新为null或其值

mctunoxg  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(342)

我正在尝试将列(lastname)更新为null,如果该列的值为空,则使用下面的mysql查询更新其值。

$updateUserInfo = "UPDATE `UsersNew` SET MobileNo = '".$dataArray['MobileNo']."',FirstName = '".$dataArray['FirstName']."', LastName = IF(LastName = '' OR LastName IS NULL, 'NULL', LastName), EmailId = '".$dataArray['EmailId']."' where Uid = '".$uid."';";

但是lastname值没有更新
如果lastname为空,我希望列更新为 NULL 其他 '".$dataArray['LastName ']."'

nfg76nw0

nfg76nw01#

三元运算符很好:

$updateUserInfo = "UPDATE `UsersNew` 
                   SET MobileNo = '".$dataArray['MobileNo']."',
                   FirstName = '".$dataArray['FirstName']."', 
                   LastName = ".$dataArray['MobileNo']? "'".$dataArray['MobileNo']."'":"NULL, 
                   EmailId = '".$dataArray['EmailId']."' where Uid = '".$uid."';";

但是要注意,您需要使用prepared语句或pdo清理输入,否则您的代码可能会受到sql注入的影响。

o8x7eapl

o8x7eapl2#

'UsersNew'

不应具有“”并且 UsersNew 学校的例子:

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

另一个来源:更新查询php-mysql
这本身可能无法解决所有问题,但如果将其他答案结合起来,可能会解决所有问题。最后,使用准备好的语句。

xtupzzrd

xtupzzrd3#

基本上你需要改变更新的部分 LastName 对此:

LastName = " . (empty($dataArray['LastName']) ? 'NULL' : "'{$dataArray['LastName']}'") . "

请注意 NULL 不应该用引号括起来。所以你的整个问题变成:

$updateUserInfo = "UPDATE `UsersNew`
                   SET MobileNo = '".$dataArray['MobileNo']."',
                   FirstName = '".$dataArray['FirstName']."', 
                   LastName = ".(empty($dataArray['LastName']) ? 'NULL' : "'{$dataArray['LastName']}'") . ",
                   EmailId = '".$dataArray['EmailId']."'
                   WHERE Uid = '".$uid."';";

相关问题