将时间戳提交给mysql

时间:2015-08-19 14:51:58

标签: php mysql

我正在尝试在更新表单时向我的数据库添加时间戳,并且由于我不知道的原因,我收到错误...当我只是尝试插入年,月,日时“1988”插入我的数据库。我在同一网站的其他地方使用类似的时间戳,它工作正常。我做错了什么?

注意:是的我知道我应该使用mysqli而且我很容易受到sql注入攻击。我计划在今年晚些时候转换整个网站。

    $homeScore = ((strlen($game['homeScore']) > 0) ? $game['homeScore'] : 'NULL');
    $homeOdds = (str_replace("\xBD", ".5", $homeScore));
    $visitorScore = ((strlen($game['visitorScore']) > 0) ? $game['visitorScore'] : 'NULL');
    $visitorOdds = (str_replace("\xBD", ".5", $visitorScore));

    $odds_timestamp = date("Y-m-d g:i:s A");

    $sql = "update " . $db_prefix . "schedule ";
    $sql .= " set odds_timestamp = " . $odds_timestamp . ", homeOdds = " . $homeOdds . ", visitorOdds = " . $visitorOdds . "";
    $sql .= " where gameID = " . $game['gameID'];
    mysql_query($sql) or die('Error updating odds: ' . mysql_error());

4 个答案:

答案 0 :(得分:4)

您缺少(单个)引号" . $odds_timestamp . "

需要'" . $odds_timestamp . "',因为它将包含MySQL会抱怨的字符......是连字符。

  • 这是一个字符串。

现在,如果您的任何其他变量也是字符串,则它们也需要如图所示引用。

I.e。:'" . $string . "'而不是" . $integer . "

有关字符串文字的更多内容:

注意里格斯的评论,其中一条是:

“最好建议将数据类型设置为DATETIME或TIMESTAMP,就像保留VARCHAR一样,它会使数据更难以在以后处理。只需更改date()以生成合法的MYSQL数据格式“

使用VARCHAR不会修复它,因为它仍被视为列的字符串文字。

Riggs的新评论:

“最好建议将数据类型设置为DATETIME或TIMESTAMP,就像保留VARCHAR一样,它会使数据更难以在以后处理。只需更改date()以生成合法的MYSQL数据当您向任何用户提供日期时间时,您总是可以添加AM / PM。后面的VARCHAR日期/时间也会严重影响您的选择标准。记住 - DATA for DATA,Browser for PRESENTATION“ < / p>

答案 1 :(得分:1)

您可以使用MySQL的NOW()函数,该函数返回当前日期时间。

答案 2 :(得分:0)

尝试使用on update set current timestamp子句在数据库表中添加timestamp列。

来自MySQL Documentation的简单示例:

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

应该照顾它并切断中间人。双赢。

答案 3 :(得分:0)

没有错误信息,很难说些什么。 或者,如果您可以打印查询,这将有所帮助。

但请试试。

odds_timestamp = '" . $odds_timestamp . "'

使其成为显式字符串。