【问题标题】:Prepare bind a blank value (not a null value)准备绑定一个空值(不是空值)
【发布时间】:2012-01-29 13:20:04
【问题描述】:

我需要在我的数据库中插入一个空白 (foo=""),但是当我这样做时:

bindParam(':foo','',PDO::PARAM_STR);
bindParam(':bar','bang',PDO::PARAM_STR);

查看表格,bar=bang,但 foo 为空。我希望它是 (空白,不是空格)而不是 null

(我需要这样做,因为数据会导出到SPSS,空白是SPSS的null

我查看了php.net/…/pdo.constants 和手册的其余部分,我只看到由于在第三个蓝月日食期间金星的奇怪对齐而插入空白的实例。

编辑:php 5.3,mysql 5.1(我不知道驱动版本)

【问题讨论】:

  • 让你的专栏NOT NULL怎么样?
  • 简短的回答是我有时需要一列为 NULL。

标签: php mysql pdo notnull


【解决方案1】:

您是否尝试过使用绑定值?

bindValue( ':foo', '', PDO::PARAM_STR );
bindValue( ':bar', 'bang', PDO::PARAM_STR );

【讨论】:

  • 你没有使用PDO::NULL_EMPTY_STRING是吗?
【解决方案2】:

PDO 应该插入空字符串(直接检查您的数据库以确认这一点)。但是,我认为 PDO 在获取数据时会将空字符串强制为 NULL,除非你告诉它不要这样做。

在你的 PDO 句柄上试试这个:

$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL);

【讨论】:

  • 我确实直接查看了我的数据库/表,它显示为 NULL。我正在插入/更新不获取。你的建议还适用吗?
  • 它可能仍然值得一试。在您的问题中提及您的 PHP、DB 和 DB 驱动程序版本也可能会有所帮助。
  • php 5.3,mysql 5.1,不知道驱动版本
猜你喜欢
  • 1970-01-01
  • 2011-04-19
  • 2013-06-16
  • 1970-01-01
  • 2020-02-05
  • 2014-03-05
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
相关资源
最近更新 更多