MySQL更新列为空或其值

时间:2019-01-03 07:45:16

标签: php mysql

我正在尝试将列(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为null,我希望该列被更新为NULL,否则     '".$dataArray['LastName ']."'

3 个答案:

答案 0 :(得分:2)

基本上,您需要更改将Server →nginx/1.10.3 (Ubuntu) Date →Thu, 03 Jan 2019 14:25:23 GMT Content-Type →application/json Content-Length →1010 Connection →keep-alive Access-Control-Allow-Origin →* Access-Control-Allow-Methods →POST 更新为以下内容的部分:

LastName

请注意,LastName = " . (empty($dataArray['LastName']) ? 'NULL' : "'{$dataArray['LastName']}'") . " 不应用引号引起来。因此,您的整个查询变为:

NULL

答案 1 :(得分:1)

三元运算符对此非常有用:

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

但是请注意,您需要使用准备好的语句或PDO清理输入,否则您的代码可能会受到SQL注入的约束。

答案 2 :(得分:0)

'UsersNew' 

不应具有'',并且应为UsersNew

来自w3Schools的示例:

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

另一个来源: Update query PHP MySQL

这本身并不能解决所有问题,但可以结合其他答案来解决。 最后,使用准备好的语句。