use*_*794 75 php mysql null sql-insert
我有一个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);
Run Code Online (Sandbox Code Playgroud)
Roc*_*mat 126
要将NULL传递给MySQL,就可以做到这一点.
INSERT INTO table (field,field2) VALUES (NULL,3)
Run Code Online (Sandbox Code Playgroud)
因此,在您的代码中,检查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)";
Run Code Online (Sandbox Code Playgroud)
dkr*_*etz 14
如果不传递值,则默认值为空.
但是你可以在没有引号的情况下传递单词NULL.
小智 13
这对我来说很好用:
INSERT INTO table VALUES ('', NULLIF('$date',''))
Run Code Online (Sandbox Code Playgroud)
(首先''
增加id字段)
通常,您可以从 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
}
Run Code Online (Sandbox Code Playgroud)
当您的值为空/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
}
Run Code Online (Sandbox Code Playgroud)
请注意,null 必须添加为 "NULL" 而不是 "'NULL'" 。非空值必须添加为“'”.$val1.“'”等。
希望这会有所帮助,我只需将其用于一些硬件数据记录器,其中一些收集温度和辐射,其他仅收集辐射。对于那些没有温度传感器的人,出于明显的原因,我需要 NULL 而不是 0(0 也是可接受的温度值)。