我正在尝试将NULL值插入到我的数据库中,我尝试了不同的示例,但结果仍然显示为0 所以我强迫它,注意下面的行// ********** $ gefid = null; 然而仍然显示为0,尝试过和没有引号,大写字母,你的名字。 该字段肯定允许Null和null是默认值 代码:
<?php
DEFINE ('DBUSER', 'xxxxxxxxx');
DEFINE ('DBPW', 'xxxxxxxxxxxxxxxxxxxxxxx');
DEFINE ('DBHOST', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.com');
DEFINE ('DBNAME', 'Mydb');
$dbc = mysqli_connect(DBHOST,DBUSER,DBPW);
if (!$dbc) {
die("Database connection failed really badly: " . mysqli_error($dbc));
exit();
}
$dbs = mysqli_select_db($dbc, DBNAME);
if (!$dbs) {
die("now the dam Database selection bit failed: " . mysqli_error($dbc));
exit();
}
$lat = mysqli_real_escape_string($dbc, $_GET['lat']);
$lng = mysqli_real_escape_string($dbc,$_GET['lng']);
$prox = mysqli_real_escape_string($dbc,$_GET['prox']);
$description = mysqli_real_escape_string($dbc,$_GET['description']);
$id = mysqli_real_escape_string($dbc,$_GET['id']);
$direction = mysqli_real_escape_string($dbc,$_GET['direction']);
$avoiddays = mysqli_real_escape_string($dbc,$_GET['avoiddays']);
$validfrom = mysqli_real_escape_string($dbc,$_GET['validfrom']);
$validto = mysqli_real_escape_string($dbc,$_GET['validto']);
if (isset($_GET['gefid'])) {
$gefid = mysqli_real_escape_string($dbc,$_GET['gefid']);
} else {
$gefid = null;
}
//***********************************
$gefid = null;
$expiry = mysqli_real_escape_string($dbc,$_GET['expiry']);
$query = "INSERT INTO realtime (rt_lat,rt_lng,rt_prox,rt_description,rt_direction,rt_avoiddays,rt_validto,rt_validfrom,rt_gefid,rt_expiry) VALUES ('$lat', '$lng', '$prox', '$description','$direction','$avoiddays','$validto','$validfrom','$gefid','$expiry')";
$result = mysqli_query($dbc, $query) or trigger_error("Query MySQL Error: " . mysqli_error($dbc));
mysqli_close($dbc);
?>
答案 0 :(得分:2)
问题出在你的INSERT
语句中,而不是变量赋值。要插入NULL
值,您的语句应如下所示(注意,NULL
周围没有引号):
INSERT INTO table (column) VALUES (NULL);
您可以创建一些额外的代码来添加或省略这些引号,但我强烈建议使用prepared statements,您不必担心转义和引用。
答案 1 :(得分:1)
你应该:
$gefid = "NULL";
代替:$gefid = null;
$gefid
INSERT INTO statement ('$gefid' to $gefid)
删除引号
醇>
因为NULL
是一个应该传递给MySQL的关键字,而不是"NULL"
这是一个字符串,所以你试图将一个字符串传递给数据库中的整数字段。
编辑:但是如果是这种情况你应该得到MySQL错误,请仔细检查你的Schema是否为默认值0。
答案 2 :(得分:0)
有人对表架构发表了评论,但我会详细说明。 您需要检查表定义是否具有自动分配的默认值,还要查看该列是否为空。
如果您使用:
SHOW CREATE TABLE realtime;
并检查字段
DEFAULT 0
NOT NULL
如果存在这些列定义中的任何一个,那么您将无法在这些列中插入空值。