如何使用char(2)將NULL
值插入到數據庫字段(MySQL)中?將NULL值插入數據庫字段中,使用char(2)作爲類型
之前我用mysql_query
,我在數據庫中得到了以下值:NU
而是這個值應該有NULL
。
閱讀後this question我切換到準備好的語句。我的數據庫中仍有NU
。
現在我的代碼。我正在讀取一行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
最後PARAMS:
$stmt = $connection->prepare("INSERT INTO employee (first, second, ...) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssssssssssii", $data[0], $data[1], ..., $last);
使用default
:
$stmt = $connection->prepare("INSERT INTO employee (first, second, ..., last) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, default(last))");
$stmt->bind_param("sssssssssssssii", $data[0], $data[1], ...);
但仍然是相同的結果。 char(2)字段具有default = 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 ;
NULL不應該用引號引起來,或者它被認爲是一個字符串 – Marco 2012-01-17 15:33:37
「如果我回顯$ data [1]我得到NULL」如果你真的把它設置爲NULL,你不應該得到任何東西呼應。如果它返回NULL,那麼你實際上將它設置爲字符串「NULL」。你從var_dump($ data [1])得到了什麼? – Andrew 2012-01-17 16:52:17
無論在PHP還是SQL中,NULL都是一個特殊的值,與NULL的字符串不同。否則,你怎麼能區分一個真正的null? – 2012-01-17 16:56:35