我有一个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, $intLngempty, ,如果是,请使用 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."'")) . 
    ")";

空白导致将正确的空(未引用)插入查询中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top