【问题标题】:PHP date into mySQL database isn't working as planned进入 mySQL 数据库的 PHP 日期未按计划工作
【发布时间】:2011-06-06 02:26:12
【问题描述】:

所以我花了几个小时试图自己解决这个问题,这让我发疯。

我只是想将日期放入 mySQL 数据库,代码如下所示:

$timeStarted = date("Y-m-d H:i:s", time());
$sqlquery = "INSERT INTO deviceStats (currTime, ...) VALUES ($timeStarted, ...)";
mysql_query($sqlquery);
echo $timeStarted;

我的 ajax 返回告诉我 $timeStarted 是正确的格式,它给出了正确的时间,但是如果我的查询中有这个变量,它就不会运行。数据库中的 currTime 字段设置为日期时间,所以它应该可以工作。

【问题讨论】:

  • 为什么我的问题被降级了?
  • 身边有些白痴,别担心。我投了赞成票。

标签: php mysql datetime time


【解决方案1】:

为什么不直接使用 NOW()?

$sqlquery = "INSERT INTO deviceStats (currTime, ...) VALUES (NOW(), ...);

【讨论】:

  • 我需要回显那个 NOW(),所以我需要将一些东西保存到一个 php 变量中。如果我可以回显 NOW() 那就太好了!
  • 运行这个查询select NOW()(但是在你的第一个查询之后运行这个会使值稍微偏离)。或者你可以去mysql_last_insert_id();重新选择记录来获取现在的值。
  • 能不能输出一下sql到底长什么样子,让我们看看完整的语句长什么样子?
  • 尝试将变量用单引号括起来。 $sqlquery = "INSERT INTO deviceStats (currTime, ...) VALUES ('$timeStarted', ...)";
  • 你叫它,单引号。我欠你一杯啤酒。
【解决方案2】:

您的问题是 MySQL 中的日期字符串正是 strings,因此必须引用(单引号)或最好作为参数传递。

使用 PDO,这将非常简单

$stmt = $pdo->prepare('INSERT INTO `deviceStats` (`currTime`, ...) VALUES (?, ...)');
$ts = date('Y-m-d H:i:s');
$stmt->bindParam(1, $ts);
$stmt->execute();
echo $ts;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多