mysql和php-插入null而不是空字符串
-
30-09-2019 - |
题
我有一个MySQL语句,将一些变量插入数据库。我最近添加了两个可选的字段($ intlat,$ intlng)。现在,如果未输入这些值,我将沿一个空字符串作为值传递。如何将显式空值传递给mySQL(如果为空)?
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
'$intLat', '$intLng')";
mysql_query($query);
解决方案
要将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)";
其他提示
如果您不通过值,则将获得默认值的零。
但是,您只需传递无引号的null这个词即可。
这对我来说很好:
INSERT INTO table VALUES ('', NULLIF('$date',''))
(第一的 ''
增量ID字段)
您要做的就是: $variable =NULL;
//并将其传递到插入查询中。这将将值存储为null在mysql db中
通常,您从这样的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。'',等等。
希望这会有所帮助,我只需要将其用于一些硬件数据记录仪,其中一些是收集温度和辐射的,而另一些则只有辐射。对于没有温度传感器的人,由于明显的原因,我需要无效,而不是0(0也是公认的温度值)。
您的查询可以如下:
$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);
在构建查询之前检查变量,如果它们为空,请将其更改为字符串null
例如,您可以做到这一点
UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'
由于某种原因,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."'")) .
")";
空白导致将正确的空(未引用)插入查询中。