【问题标题】:MySql_query insert null not 0 [closed]MySql_query 插入 null 不是 0 [关闭]
【发布时间】:2012-11-30 09:27:40
【问题描述】:

数据库:

DAlanding int(11) Ja NULL

$DAlanding = $_POST['DAlanding '];

if ($DAlanding =="")
{
    $DAlanding =NULL;
}
$sql = "INSERT INTO cardex (DAlanding) VALUES('$DAlanding')";

但现在我需要它来约会:

DAdate 日期 Ja NULL

$DAdate  = $_POST['DAdate '];

if ($DAdate  =="")
{
    $DAdate  = 'NULL';
}
$sql = "INSERT INTO cardex (DAdate) VALUES('$DAdate')";

【问题讨论】:

    标签: php mysql insert null


    【解决方案1】:

    为了插入NULL,您需要不带引号传递它。

    $DAlanding = isset($_POST['DAlanding']) && $_POST['DAlanding'] != '' ? "'" . $_POST['DAlanding'] . "'" : 'NULL';
    
    $sql = "INSERT INTO cardex (DAlanding) VALUES($DAlanding)";
    

    您应该查找 SQL 注入,因为您正在插入原始用户输入,从而造成漏洞。

    【讨论】:

    • 回显 $sql 并向我们展示它包含的内容。
    【解决方案2】:

    将数据类型设置为 varchar 或 char。如果我们使用 int 它会自动将 0 分配给相应的字段。

    【讨论】:

    • 使用 if ($PPAlanding==""){ $PPAlanding='NULL';} 并且在我的数据库中更改为 varchar 它会有所帮助。所以我将我的数据库更改为 varchar En add ''
    • 但是你有约会的分析器吗?
    • 我们无法修复日期字段。它应该像这样分配 0000-00-00
    【解决方案3】:

    我很惊讶您在尝试将 STRING 值插入 int 列时没有收到错误消息。
    通常您会省略不想插入任何内容的列

    【讨论】:

    • 我可以插入一个像 5 之类的值,但我希望如果没有输入,就会有 NULL 而不是值 0。
    【解决方案4】:

    试试这个

    if ($DAdate  =="")
    {
        $DAlanding= NULL;
    }
    else{
        $DAlanding= "'".$DAdate."'";
    }
    
    $sql = "INSERT INTO cardex (DAlanding) VALUES($DAlanding)";
    

    去掉$DAlanding前后的'

    【讨论】:

    • 我认为当值为空时你是对的。但是当我有一个值时,我会得到一个错误。
    • 我已经编辑了我的溶胶。立即查看
    【解决方案5】:

    将 NULL 设为字符串“NULL”。那么 SQL 就会正确。

     if ($DAlanding =="")
        {
            $DAlanding ="NULL";
        }
      $sql = "INSERT INTO cardex (DAlanding) VALUES($DAlanding)";
    

    【讨论】:

    • 没有帮助所有人都已经尝试过。
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 2020-10-12
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2014-01-19
    相关资源
    最近更新 更多