MySQL:Can';t更新现有的NULL值


MySQL: Can't update existing NULL value

我有一个奇怪的问题,我确信这是因为我不了解MySQL的所有特性:(

我有一个表,其中一列的默认值为NULL,即"TeamID"。当我添加一个新行而不给该列一个值时,它就是NULL。完美的除了当我希望更新该行时,以下代码似乎不会更改NULL的值(甚至不会导致任何错误):

    $STH = $this->_db->prepare("UPDATE UserDetails SET 
            TeamID = ':teamID' WHERE UserID = ':userID';");
    $STH->execute($params);

重申这个问题:如果TeamID已经是NULL,那么用不可为null的值覆盖它会遇到问题。我看不出代码本身有什么错误,所以我认为这与NULL值有关。

使用PHP/MMySQL进行编码的一个问题是,您不能在遍历代码的同时查看数据库的内容,因为PHPMyAdmin也会被遍历。

谢谢你的帮助!

部分问题可能在于在参数周围使用引号。由于您使用的是带有params的PDO准备语句,因此不必引用字符串。我不确定PDO是如何表示null的,但您可能最终会遇到这样的情况:尝试设置SET TeamID = ''SET TeamID = 'null',根据列类型的不同,这可能无效。

不要用PDO:在命名参数周围加引号

$STH = $this->_db->prepare("UPDATE UserDetails SET 
            TeamID = ':teamID' WHERE UserID = ':userID';");
$STH->execute($params);

UserID永远不会等于字符串':userID',因此不会更新任何内容。

为了确保您的参数得到解释,请删除引号,如下所示:

$STH = $this->_db->prepare("UPDATE UserDetails SET 
            TeamID = :teamID WHERE UserID = :userID");
$STH->execute($params);