如何NULL使用char(2)将值插入数据库字段(MySQL)?
NULL
在使用mysql_query数据库之前,我已经获得了以下值:NU
mysql_query
NU
代替此值,应该是NULL。
现在到我的代码。我正在逐行读取CSV。然后我做
if(empty($data[$c])) { $data[$c] = NULL; }
如果我回显$ data [1],我得到NULL。然后,我准备好查询:
$stmt = $connection->prepare("INSERT INTO table (first, second, ..) VALUES (?, ?, ...)"); $stmt->bind_param("ss...", $data[0], $data[1], ...); $res=$stmt->execute();
怎么了?
编辑:
根据Shiplu,我做了以下工作:
在不给出导致以下原因的最后参数的情况下执行此操作NU:
$stmt = $connection->prepare("INSERT INTO employee (first, second, ...) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param("sssssssssssssii", $data[0], $data[1], ..., $last);
使用default:
default
$stmt = $connection->prepare("INSERT INTO employee (first, second, ..., last) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, default(last))"); $stmt->bind_param("sssssssssssssii", $data[0], $data[1], ...);
但是结果还是一样。char(2)字段的默认值为NULL。怎么可能?看来问题不在于查询。我认为最简单的解决方案是更新查询…
创建表:
CREATE TABLE IF NOT EXISTS `mytable` ( `id` int(11) NOT NULL auto_increment, `text` varchar(128) default NULL, `no` int(11) default NULL, `problemfield` char(2) default NULL, PRIMARY KEY (`id`), FULLTEXT KEY `text` (`text`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=832 ;
我发现了问题。我正在读取一个csv文件。该文件是用phpmyadmin导出的,其中包含NULL字符串。我的支票
还不够,因为它从未检查过string NULL。因此,解决方案是:
if(empty($data[$c]) || $data[$c]=='NULL') { $data[$c] = NULL; }
所以安德鲁是对的。