2009-11-13 4 views
7

Я использую Zend Framework с MySQL, Apache и Ubuntu 9.04.Zend: Как вставлять значения NULL в MySQL

Я пытаюсь вставить NULL значения в базу данных, как это:

$personObj->setPersonId('1'); 
$personObj->setPersonEmail('NULL'); 
$personObj->save(); 

Но «NULL» хранится в базе данных в виде строки, а не NULL.

Когда я использую это:

$personObj->setPersonId('1'); 
$personObj->setPersonEmail(NULL); 
$personObj->save(); 

Но ничего не происходит, и предыдущая запись не изменяется.

Что нужно сделать, чтобы вставить значения NULL в MySQL?

+0

Без одинарные кавычки? –

+0

Когда я использую $ personObj-> setPersonEmail ('NULL'); Он вставляет NULL в качестве строки. Когда я использую $ personObj-> setPersonEmail (NULL); предыдущая запись не изменяется и ничего не происходит. – NAVEED

+0

Какой тип объекта '$ personObj'? Как уже говорили другие, не зная о внедрении 'setPersonEmail()', вы не можете определить, что должно быть передано. –

ответ

17

Если вы не изменяя любые значения после того, как они назначаются затем

new $personObj->setPersonEmail(new Zend_Db_Expr('NULL')); 
+1

да, он работает. – NAVEED

+3

Это тоже работало для меня, но мне нужно сделать новый Zend_Db_Expr ('NULL') ' –

0

Я думаю, что положить NULL в кавычки - это то, что делает его похожим на строку.

Я не знаю о вашем методе, но для прямой вставки, хотя команда INSERT mysql, одиночные кавычки вокруг NULL неверны.

+0

Я также пробовал это $ personObj-> setPersonEmail (NULL); Но ничего не случилось. Предыдущая запись не изменилась. – NAVEED

+1

Это зависит ** полностью ** от того, как работает метод setPersonEmail() ', и является ли он действительным для * обновления * записи. – pavium

+0

Да, он обновляется. Когда я использую этот $ personObj-> setPersonEmail ('[email protected] '); Он заменяет предыдущую запись базы данных [email protected] Но моя проблема - удалить предыдущую запись и вставить NULL, если пользователь удалит свой адрес электронной почты. – NAVEED

1

Сначала мысль была бы прямой, проходящей по ключевому слову null, без кавычек вокруг нее. Как сказал павний, кавычки вокруг него превращают его в строку.

+0

Я пробовал это $ personObj-> setPersonEmail (null); Но не повезло. Фактически я обновляю эту запись. Электронная почта уже существует в базе данных, и я хочу удалить ее и вставить NULL. – NAVEED

+0

Может попробовать пустые кавычки, хотя это, скорее всего, просто сделает его пустой строкой. Вы пытались получить доступ к столбцу более прямо, а не через функцию set? т.е.: $ personObj-> personEmail = null; – Tarka

Смежные вопросы