我有一个MySQL语句,它将一些变量插入到数据库中。我最近添加了2个可选字段($ intLat,$ intLng)。现在,如果没有输入这些值,我将空字符串作为值传递。如何将显式NULL值传递给MySQL(如果为空)?
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
'$intLat', '$intLng')";
mysql_query($query);
答案 0 :(得分:121)
要将NULL传递给MySQL,就可以做到这一点。
INSERT INTO table (field,field2) VALUES (NULL,3)
因此,在您的代码中,检查if $intLat, $intLng
是empty
,如果是,请使用NULL
代替'$intLat'
或'$intLng'
。
$intLat = !empty($intLat) ? "'$intLat'" : "NULL";
$intLng = !empty($intLng) ? "'$intLng'" : "NULL";
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
$intLat, $intLng)";
答案 1 :(得分:12)
如果你没有传递值,你将获得默认值的空值。
但你可以在没有引号的情况下传递单词NULL。
答案 2 :(得分:8)
这对我来说很好用:
INSERT INTO table VALUES ('', NULLIF('$date',''))
(首先''
递增id字段)
答案 3 :(得分:7)
您所要做的就是:$variable =NULL;
//并在插入查询中传递它。这将在mysql db
答案 4 :(得分:3)
通常,您可以像PHP一样向mySQL添加常规值:
function addValues($val1, $val2) {
db_open(); // just some code ot open the DB
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES ('$val1', '$val2')";
$result = mysql_query($query);
db_close(); // just some code to close the DB
}
当您的值为空/ null($ val1 ==“”或$ val1 == NULL),并且您希望将NULL添加到SQL而不是0或空字符串时,请执行以下操作:
function addValues($val1, $val2) {
db_open(); // just some code ot open the DB
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')?"NULL":("'".$val1."'")) . ", ".
(($val2=='')?"NULL":("'".$val2."'")) .
")";
$result = mysql_query($query);
db_close(); // just some code to close the DB
}
请注意,null必须添加为“NULL”而不是“'NULL'”。必须将非空值添加为“'”。$ val1。“'”等。
希望这有帮助,我只需要将它用于一些硬件数据记录器,其中一些收集温度和辐射,另一些只收集辐射。对于没有温度传感器的人,我需要NULL而不是0,原因很明显(0也是可接受的温度值)。
答案 5 :(得分:2)
您的查询可以如下:
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$lng', '" . ($lat == '')?NULL:$lat . "', '" . ($long == '')?NULL:$long . "')";
mysql_query($query);
答案 6 :(得分:1)
在构建查询之前检查变量,如果它们为空,则将它们更改为字符串NULL
答案 7 :(得分:1)
你可以用
来做UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'
答案 8 :(得分:1)
出于某种原因,radhoo的解决方案对我来说不起作用。当我使用以下表达式时:
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')?"NULL":("'".$val1."'")) . ", ".
(($val2=='')?"NULL":("'".$val2."'")) .
")";
'空' (带引号)插入而不是没有引号的null,使其成为字符串而不是整数。所以我终于尝试了:
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')? :("'".$val1."'")) . ", ".
(($val2=='')? :("'".$val2."'")) .
")";
空白导致在查询中插入正确的null(未引用的)。