NULL
の値をchar(2)のデータベースフィールド(MySQL)に挿入するにはどうすればよいですか? char(2)型のデータベースフィールドにNULL値を挿入してください
mysql_query
使用する前に、私は、データベースに次の値だ:
NU
代わりにこの値のNULL
があるはずですが。
this questionを読んだ後、私は準備文に切り替えました。私はまだNU
を私のデータベースに持っています。
私のコードにしてください。私はCSVの行のための行を読んでいます。それから私は、私は$データをエコー場合
if(empty($data[$c])) {
$data[$c] = NULL;
}
は、[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与えることなく、それを実行します。default
を使用して
$stmt = $connection->prepare("INSERT INTO employee (first, second, ...) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssssssssssii", $data[0], $data[1], ..., $last);
を:
$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 ;
'NULL'は引用符で囲まれていてはいけません。それは文字列とみなされます。 – Marco
" $ data [1]を返すとNULLになります "実際に' NULL'に設定した場合、エコー。NULLを返している場合は、実際には文字列 '' NULL ''に設定します。あなたは 'var_dump($ data [1])'から何を得ますか? – Andrew
PHPとSQLの両方で、 'NULL'は' NULL''文字列と同じではない特別な値です。それ以外の場合は、どうすれば実際のnullを区別できますか? –