我正在尝试使用mysqli_query从PHP向mysql插入NULL。
我的代码如下,我想在$chq_date
中插入Null:
$query_string = "INSERT INTO inward_credit
(custi_id_fk, driver_id_fk, today_date, amount, mode, cheque_date, cheque_no)
VALUES
('$cust_id1', '$driver_id1', '$today_date', '$credit_collected', '$mode', '$chq_date', '$cheque_number')";
$insert_credit = mysqli_query($con, $query_string);
我试过
$chq_date = "";
导致日期值不正确:''对于第1行的列'cheque_date'
$chq_date = '';
导致日期值不正确:''对于第1行的列'cheque_date'
$chq_date = 'NULL';
日期值不正确:第1行的列'cheque_date'为'NULL'
$chq_date = "NULL";
日期值不正确:第1行的列'cheque_date'为'NULL'
数据库是
CREATE TABLE IF NOT EXISTS `inward_credit` (
`id` int(11) NOT NULL,
`custi_id_fk` int(11) NOT NULL,
`driver_id_fk` int(11) NOT NULL,
`today_date` date NOT NULL,
`amount` float(50,2) NOT NULL,
`mode` int(1) NOT NULL,
`cheque_date` date DEFAULT NULL,
`cheque_no` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
答案 0 :(得分:2)
您没有插入null,而是在其中插入带有字符N
,U
等的STRING:
$null_val = 'NULL';
$sql = "INSERT .... VALUES ('$null_val')";
^---------^----
由于上述指示始终存在,您永远不能插入实际的sql null。删除引号允许您的字符串null由DB的解析器作为sql null进行SEEN。
答案 1 :(得分:2)
您的列的默认值为NULL
,因此不必在INSERT
语句中。
$query_string = "INSERT INTO inward_credit
(custi_id_fk, driver_id_fk, today_date, amount, mode, cheque_no)
VALUES
('$cust_id1', '$driver_id1', '$today_date', '$credit_collected', '$mode', '$cheque_number')";
$insert_credit = mysqli_query($con, $query_string);
如果您想插入NULL
,请使用以下内容;
$chq_date
,因为这会使NULL
成为字符串。请参阅Marc B's Answer
//if/else logic.
if(<<what>>) {
$chq_date = "2014/09/09";
} else {
$chq_date = "NULL";
}
$query_string = "INSERT INTO inward_credit
(custi_id_fk, driver_id_fk, today_date, amount, mode, cheque_date, cheque_no)
VALUES
('$cust_id1', '$driver_id1', '$today_date', '$credit_collected', '$mode', $chq_date, '$cheque_number')";
$insert_credit = mysqli_query($con, $query_string);
答案 2 :(得分:0)
尝试不带引号的NULL
:
$query_string =
"INSERT INTO inward_credit (custi_id_fk, driver_id_fk, today_date, amount, mode, cheque_date, cheque_no)
VALUES ('$cust_id1', '$driver_id1', '$today_date', '$credit_collected', '$mode', $chq_date, '$cheque_number')"
另外,在你的故事定义中DEFAULT NULL
是多余的(在sql中默认为NULL,因此当你不想要NULL时必须指定NOT NULL)。
答案 3 :(得分:0)
在表中,您的默认值为NULL。所以不需要插入
$query_string = "INSERT INTO inward_credit
(custi_id_fk, driver_id_fk, today_date, amount, mode, cheque_no)
VALUES
('$cust_id1', '$driver_id1', '$today_date', '$credit_collected', '$mode', '$cheque_number')";
$insert_credit = mysqli_query($con, $query_string);
但是如果要显式插入null,可以尝试
$query_string = "INSERT INTO inward_credit
(custi_id_fk, driver_id_fk, today_date, amount, mode, cheque_date, cheque_no)
VALUES
('$cust_id1', '$driver_id1', '$today_date', '$credit_collected', '$mode', NULL, '$cheque_number')";
$insert_credit = mysqli_query($con, $query_string);