MySQL: невозможно обновить существующее значение NULL - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть странная проблема, в которой я уверен, потому что я не понимаю всех особенностей MySQL: (

У меня есть таблица со столбцом, значение по умолчанию которого NULL,«TeamID». Когда я добавляю новую строку без указания значения для этого столбца, он равен NULL. Идеально. За исключением случаев, когда я хочу обновить эту строку, следующий код, по-видимому, не меняет значение с NULL(или даже вызвать любую ошибку):

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

Для повторного решения проблемы: у меня проблема с перезаписью TeamID с ненулевым значением, если оно уже NULL. Я не вижу, где есть какая-либо ошибкав самом коде, так что я представляю, что это как-то связано со значением NULL.

Одна из проблем кодирования с помощью PHP / MySQL заключается в том, что вы не можете пройтись по коду и посмотреть содержимоев то же время, потому что PHPMyAdmin также проходит через все это.

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Часть вашей проблемы может заключаться в использовании кавычек вокруг параметров. Поскольку вы используете подготовленный оператор PDO с параметрами, вам не нужно заключать в кавычки свои строки. Я не уверен, как PDO представляет null, но вы можете оказаться в ситуации, когда вы попытаетесь установить SET TeamID = '' или SET TeamID = 'null' и, в зависимости от типа столбца, это может быть недопустимым.

1 голос
/ 29 февраля 2012

Не помещайте кавычки вокруг именованных параметров с помощью 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...