php - mysql 不会取 null,而是设置 0

标签 php mysql null

我试图在我的数据库中插入一个 NULL 值,我尝试了不同的示例,但结果一直显示为 0 所以我强制它,注意下面的行//********** $gefid = null; yet 仍然显示为 0,已尝试使用和不使用引号、大写字母,随你便。 该字段绝对允许空值,空值是默认值 代码:

<?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);
?>

最佳答案

问题在于您的INSERT 语句,而不是变量赋值。要插入 NULL 值,您的语句应如下所示(注意,NULL 周围没有引号):

INSERT INTO table (column) VALUES (NULL);

您可以创建一些额外的代码来添加或省略这些引号,但我强烈建议使用 prepared statements ,您不必再担心转义和引号。

关于php - mysql 不会取 null,而是设置 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24300262/

相关文章:

Mysql Sum 不适用于单行结果

C++ 无法将 NULL 指针设置为包含对象的静态变量?

php - json_encode 返回 NULL?

php - 匹配数据透视表中的 id 数组

php - 为线程安全动态配置 PHP --enable-maintainer-zts,还是使用 yum 安装 pthreads?

mysql - "AND"和 "OR"关键字如何在选择查询中一起使用?

c# - Asp.Net MVC - 在数据库中插入多行

android - 无法将 null 传递给 execute(); android 4.0中AsyncTask的方法

php - ZF2 Apigility Rest - 无法获得多个参数

php - 运行 PHP 脚本时显示加载符号