【问题标题】:Null value is substituted by ''空值替换为 ''
【发布时间】:2013-07-18 07:34:22
【问题描述】:

如果 $Time 为空,则在查询中将其替换为 ''。结果查询不正确。如何避免这个问题?

$Time = strtotime($arrivals[$i]["time"]);
if ($Time != null)
{
$Time = strftime("%Y-%m-%d %H:%M:%S", $Time);
}

$query="INSERT INTO `Schedule` (`Time`) VALUES('".$Time."');";

结果查询:

INSERT INTO `schedule` (`Time`) VALUES('');

但应该是:

INSERT INTO `schedule` (`Time`) VALUES(null);

【问题讨论】:

  • ... else { 用不是“”的东西替换它? } 如果是null,你想要做什么
  • @deceze: 否则 { $Time = ""; } 不起作用。
  • 应该是这样的:INSERT INTO schedule (Time) VALUES(null);否则它不起作用。

标签: php sql datetime


【解决方案1】:

如果你想在查询中使用NULL 而不是'2013-...',你显然需要做更多的事情。

if ($Time === null) {
    $Time = 'NULL';
} else {
    $Time = strftime("'%Y-%m-%d %H:%M:%S'", $Time);
    //                ^ note the quotes ^
}

$query = "INSERT INTO `Schedule` (`Time`) VALUES ($Time);";
//                                note: no quotes ^   ^

【讨论】:

  • 如果时间为NULL,那会插入一个NULL值还是字符串NULL
  • 因为我省略了 "NULL" 的引号,所以它是 SQL NULL 值,而不是字符串 'NULL'
  • 终于,一个真正可行的答案!
【解决方案2】:

已解决!! 我需要在 Date 字段中插入 Null 或 '' 值。当我在 MySQL 查询中传递 '' 或 null 时,它存储 000-00-00 而不是空白或 null 值。我尝试了很多方法来克服这个问题,但最后我必须将字段的 Datatype 从 Date 更改为 Varchar。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案3】:

试试这个:

$query="INSERT INTO `Schedule` (`Time`) VALUES('".($Time==''?'null':$Time)."');";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2016-09-29
    • 2013-08-28
    • 1970-01-01
    相关资源
    最近更新 更多