I am having trouble inserting null values into date fields into a MySQL table.
Here is the insert query:
$query = 'INSERT INTO table (column_s1, column_s2, column_d1, column_d2)
VALUES ("'.$string1.'", "'.$string2.'", '.$date1.', '.$date2.')';
Columns s1 and s2 take string values and d1 and d2 take dates. When I run this query with only the string fields, there is no problem.
The date values can be either set or null, so I have not included the quotation marks in the query, but have instead added them to the variable earlier on. This is the php code I am using to set the date values:
if (empty($date1)){
$date1 = NULL;
}
else{
$date1part = explode("/",$date1);
$date1 = '"'.$date1part[2].'/'.$date1part[1].'/'.$date1part[0].'"';
}
When the date values are all set, the record is inserted correctly. However, when either of the dates is null, nothing is inserted.
Why can't I just insert null values into MySQL like this?
Try this:
so for example if you put this into query:
result should be:
Backslash N is another way to express NULL in MySQL.
Try putting the value (backslash N):
\N
into one of the parameters like this:Reference: http://dev.mysql.com/doc/refman/5.1/en/load-data.html
if NULL no work just pass date as "0000-00-00"
Probably answer is unneeded at this moment, but I found solution exactly I have been searching. Use an
Expression
to passNULL
like this:Hence, MySQL will understand what you want, and save
(NULL)
in DB instead of storing 0-dates. Hope this will help somebody.You should convert the null variable into a NULL string first Like this:
If you are using a MySQL date column, you must also specify that it should hold null when creating it, like this:
It is also very important that you perform the query with bound parameters, for example using pdo
Something like this:
In Derby, If you want to insert values except the ones you have declared Null (column_d1, column_d2), sql: