【问题标题】:PHP Syntax error (missing operator) when trying to save a date尝试保存日期时出现 PHP 语法错误(缺少运算符)
【发布时间】:2014-01-08 01:51:06
【问题描述】:
date_default_timezone_set('America/Los_Angeles');
$date = date('m/d/Y h:i:s a', time());


$sql = "INSERT INTO BidList (BidID,JobNumber,Created,Final) 
            VALUES ('$bidid','$jobnumber',$date,'No')";

如果我使用 '$date' 而不是 $date,我会收到数据类型不匹配错误,因为 'Created' 在我的数据库中属于 'Date/Time' 类型。将日期保存到 Microsoft Access 数据库的正确方法是什么?我需要数据库中的字段类型为“日期”,所以我不能简单地将其切换为文本。

【问题讨论】:

    标签: php sql database type-conversion


    【解决方案1】:

    您需要在日期前后加上引号。出现类型不匹配的原因是日期需要采用Year-month-day 格式,而时间格式为Hours:minutes:seconds。因此,您需要将数据类型更改为 DATETIME 或将其存储为日期。

    来自 MYSQL 手册

    DATETIME 类型用于同时包含日期和时间的值 部分。 MySQL 检索并显示 'YYYY-MM-DD 中的 DATETIME 值 HH:MM:SS' 格式。支持的范围是 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'。

    【讨论】:

    • 不。他已经尝试过了,但出现错误:I get a data type mismatch error because 'Created' is of type 'Date'(这是第一个答案)
    • 谢谢,我必须在数据库中指定日期/时间,然后指定“常规日期”才能获得正确的数据类型。
    【解决方案2】:

    如果你只想要日期,那么只需使用日期部分。

    改变

    $date = date('m/d/Y h:i:s a', time());
    

    $date = date('Y-m-d');
    

    并且在 sql 中引号是日期所必需的。

    【讨论】:

    • 我想在这里同时拥有日期和时间,数据库字段类型实际上是日期/时间。而且我不相信引号是必需的,因为我经常将它们关闭以将整数插入到我的数据库中。在此处添加引号会将内容转换为类型文本,这通常会导致数据类型不匹配错误。
    • @Hoser 那是整数,整数不需要引号。
    • 对不起,我以为你的意思是总是需要引号
    • @Hoser 尽管可以识别不带引号的整数,但强烈建议您明确使用引号来保护自己免受注入。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多