【问题标题】:mysql update column to null or its valuemysql 将列更新为 null 或其值
【发布时间】:2019-05-29 19:16:16
【问题描述】:

我正在尝试将列 (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 ']."'

【问题讨论】:

  • 这可能会给Jennifer Null等人带来问题
  • 在任何情况下,我们都不应使用直接附加到查询中的值。你可以有一千种方法来防止注射,但总有第 1001 种。使用prepared statements,注入仍然是可能的,但使用适当的字符集,特别是如果你只需要英语和西方语言,那么使用prepared statements可以避免注入。您可以担心 XSS 等其他问题。

标签: php mysql


【解决方案1】:

基本上您需要将更新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."';";

【讨论】:

  • 我在上面尝试过,但是如果 LastName 为空,LastName 列会更新为空(空白),而不是像预期的“NULL”那样更新,如果我有 $dataArray['LastName]`,那么它会更新列中的值正确
  • @Sushivam 你的意思是$dataArray['LastName]` 是空的吗?
  • 是的,如果我不通过 LastName ie) 如果我没有 $dataArray['LastName]`,那么我的 LastName 列应该更新为 NULL,而不是更新为空。
  • @Sushivam 对不起,我误解了你的问题。查看我的编辑,也是3v4l.org/ToFKU的一个小演示@
【解决方案2】:

三元运算符非常适合:

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

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

【讨论】:

  • 您的三元查询抛出语法错误、语法错误或访问冲突:1064 您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,以了解在第 1 行的 '''' 附近使用的正确语法",
【解决方案3】:
'UsersNew' 

不应该有''并且是UsersNew

来自w3Schools的示例:

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

另一个来源: Update query PHP MySQL

这本身可能无法解决所有问题,但结合其他答案,它可能会解决。 最后,使用准备好的语句。

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多