【问题标题】:Zend: How to insert NULL values into MySQLZend:如何将 NULL 值插入 MySQL
【发布时间】:2009-11-13 06:16:08
【问题描述】:

我正在将 Zend 框架与 MySQL、Apache 和 Ubuntu 9.04 一起使用。

我正在尝试像这样将 NULL 值插入数据库:

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

但是'NULL'作为字符串而不是NULL存储在数据库中。

当我使用这个时:

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

但是什么都没有发生,之前的条目没有改变。

如何在 MySQL 中插入 NULL 值?

【问题讨论】:

  • 当我使用 $personObj->setPersonEmail('NULL');它将 NULL 作为字符串插入。当我使用 $personObj->setPersonEmail(NULL);以前的条目没有改变,什么也没有发生。
  • $personObj 是什么类型的对象?正如其他人已经说过的那样,如果不知道 setPersonEmail() 的实现,您就无法确定必须传入的内容。
  • $personObj 是人的记录对象。 setPersonEmail() 是一种在数据库中设置 personEmail 条目值的方法。 save() 是一种将所有设置值存储到数据库中的方法。它是 zend 框架中的常见做法。正如我所说,它完美地适用于字符串值,但问题是 NULL 条目。
  • 这无济于事......了解setPersonEmail()save()的实现至关重要;尤其重要的是如何将数据写入数据库。在调用save() 和数据写入数据库之间可能会发生很多事情。

标签: php mysql zend-framework null zend-db


【解决方案1】:

如果你在赋值后没有修改任何值,那么

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

【讨论】:

  • 这对我也有用,但我必须这样做new Zend_Db_Expr('NULL')
【解决方案2】:

首先想到的是直接传入 null 关键字,不带引号。正如 pavium 所说,它周围的引号将它变成了一个字符串。

【讨论】:

  • 我试过这个 $personObj->setPersonEmail(null);但没有运气。其实我正在更新这个条目。数据库中已经存在一封电子邮件,我想删除它并插入 NULL。
  • 可以尝试空引号,尽管这可能只会使其成为空字符串。您是否尝试过更直接地访问列,而不是通过 set 函数?即:$personObj->personEmail = null;
【解决方案3】:

我认为将 NULL 放在引号中使它看起来像一个字符串。

我不知道你的方法,但是对于通过mysql INSERT 命令直接插入,NULL 周围的单引号是不正确的。

【讨论】:

  • 我也试过这个 $personObj->setPersonEmail(NULL);但是什么也没发生。上一个条目没有改变。
  • 完全取决于setPersonEmail()方法的工作原理,以及它是否对更新条目有效。
  • 是的,它会更新。当我使用这个 $personObj->setPersonEmail('test@test.com');它将以前的数据库条目替换为 test@test.com。但我的问题是如果用户删除他/她的电子邮件地址,则删除以前的条目并插入 NULL。
猜你喜欢
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 2019-12-02
相关资源
最近更新 更多