2011-12-28 62 views
0

我需要插入一个空白(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中(我不知道该驱动程序版本)

+0

如何让你的列'NOT NULL'? – deceze 2011-12-28 23:42:03

+0

简短的回答是我有时需要一列为NULL。 – jacob 2011-12-28 23:44:17

回答

0

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

试试这个在您的PDO手柄:

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

我确实直视了我的Db /表格,它说NULL。我正在插入/更新_not fetching_。你的建议是否仍然适用? – jacob 2011-12-29 17:55:14

+0

它可能仍然值得一试。在你的问题中提及你的PHP,DB和DB驱动版本也可能会有所帮助。 – cdhowie 2012-01-06 18:08:12

+0

php 5.3,mysql 5.1,我不知道驱动程序版本 – jacob 2012-01-06 18:46:24

0

你尝试过使用bindvalue?

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

尝试过'bindValue',但它仍然显示为空:/ – jacob 2011-12-29 19:21:00

+0

你没有使用'PDO :: NULL_EMPTY_STRING'是你吗? – 2011-12-29 19:28:16