php往mysql里写数据,日期类型,默认是允许NULL的
insert into my_test(my_date) VALUES (null) 这个可以成功写入
insert into my_test(my_date) VALUES ('') 这个无法写入
执行语句之前可以判断$my_date 如果为空,则赋值"NULL",或NULL时,
执行到insert into my_test(my_date) VALUES ('".$my_date."') 语句时,就会变成'',导致写入错误,怎么才能保证$my_date在语句执行时变成不带括号的null?
直接foreach判断完后在拼接语句,如下:
$mydate = '';
$insert_data = array(
'my_date' => $mydate
);
foreach($insert_data as $key => $val) {
if($val === "") {
$insert_data[$key] = 'NULL';
}
}
$sql = '';
$keys = array_keys($insert_data);
$vals = array_values($insert_data);
$sql = sprintf(
"INSERT INTO my_test (%s) VALUES (%s)",
implode(',', array_keys($insert_data)), '"' . implode('","', $vals) . '"'
);
echo $sql;
insert into my_test(my_date) VALUES ($my_date) ;
这样写试试?