【问题标题】:PHP: Set variable to NULL and write NULL to MySQL [duplicate]PHP:将变量设置为NULL并将NULL写入MySQL [重复]
【发布时间】:2016-01-13 20:11:38
【问题描述】:

多年来我有一个简单的问题: 如何将值设置为 NULL 并将 NULL 写入 MySQL?

$var = trim(mysqli_real_escape_string($_POST["input_from_user"]));
if(strlen($var) < 1) {
$newvar = NULL;
}
else {
$newvar = $var;
}

和:

INSERT INTO `table` (`var`) VALUES ('$newvar')

...alyways 将一个空值写入 MySQL-Table,但不是 NULL! 当然:字段“var”声明为允许在 MySQL 中使用“NULL”。

【问题讨论】:

  • 尝试使用unset
  • 五个被否决的答案,真是一个问题
  • @AlanMachado 其中一位实际上回答了这个问题,但并不是每个人都能立即看到。

标签: php mysql mysqli


【解决方案1】:

使用 PDO,您可以使用 bindValue() 方法来准备语句

bindValue(':param', null, PDO::PARAM_INT);

Here你可以在mysqli中找到方法

【讨论】:

  • 请否决解释?
【解决方案2】:

首先,您必须为所有数据库交互使用准备好的语句。使用时,它们会将您的 NULL 值传递给数据库,无论是使用 mysqli 还是 PDO。

【讨论】:

    【解决方案3】:

    试试

    "INSERT INTO `table` (`var`) VALUES (" . (is_null($newvar)) ? "NULL" : $newvar . ")";
    

    【讨论】:

    • 这在很多方面都很糟糕。
    • "NULL" != NULL 我的朋友
    • 这就是为什么它对我的朋友有用。查询解析器可以看到它而不是 php 变量
    • @JulioSoares 我花了一段时间才看到这确实有效。太糟糕了,几乎没有人能提高注意力也能看到它。我建议您批准我的编辑,以便每个人都可以看到这确实有效。即使罗伯特错了,你也不应该报复投反对票。
    • @Robert 引号围绕字符串 NULL,这些引号不会出现在查询字符串中。这个答案其实是最简单最正确的。
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多