【问题标题】:Inserting a null value into SQL if form field blank如果表单字段为空,则将空值插入 SQL
【发布时间】:2012-02-13 15:17:16
【问题描述】:

如果表单字段留空但运气不佳,我正在尝试将空值添加到数据库中...

谁能看出这是哪里出了问题??

<?php
$con = mysql_connect("ipaddress","user","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("database", $con);

if (is_null($_POST["event_sub"]) || $_POST["event_sub"]=="") {
    $event_sub = NULL;
} else {
    $event_sub = mysql_real_escape_string($_POST["event_sub"]);
}

$sql="INSERT INTO myTable (event_sub)
VALUES
(". $event_sub .")";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

mysql_close($con)
?>

【问题讨论】:

  • 转储 $_POST$sql。这个问题应该会变得更加明显。
  • “但运气不佳 [...] 任何人都可以看到” 是的,你。输出查询,查看你从 MySQL 得到的错误,检查数据库中的数据。
  • 你试过设置$event_sub = "null"吗?
  • @CodeCaster 我对 PHP 还很陌生,所以请原谅我的天真。感谢您的建议。
  • @Tom 是的,仅通过查看代码可能需要一些经验才能看到问题,但通过适当的调试,您可以得出相同的结论。这不仅会产生一个更好的问题,它甚至可以为您提供解决方案而无需发布问题,因为您会自己看到问题。 ;-)

标签: php sql null


【解决方案1】:

也许试试这个:

if (is_null($_POST["event_sub"]) || $_POST["event_sub"]=="") {
$event_sub = 'NULL';
} else {
$event_sub = mysql_real_escape_string($_POST["event_sub"]);
}

将 NULL 放在单引号中会导致将单词 NULL 插入到查询中,而不是实际的 NULL,这没什么。

【讨论】:

  • @Tom 你确定它没有插入文本“NULL”而不是实际的 NULL 值吗?
【解决方案2】:

为什么需要搜索 NULL 这个词?只需将该列的插入内容留空即可。并确保在表中设置了允许 null ..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多