【问题标题】:error in save date in database with php使用php在数据库中保存日期时出错
【发布时间】:2014-07-02 04:49:22
【问题描述】:

希望能够将 PHP 中的当前日期存储到 mysql 表中。

$date = sprintf("%'04s-%'02s-%'02s",$year_number,$month_number,$day_number);

$sql="INSERT INTO  `prg omran`.`paid`(`Comapny_id`,`Amount`,`Date`,`Creditrecord`) VALUES ('".$ID."','".$credit."','".$date."','".$yes."')";

数据库中日期的列类型是DATE。

但是日期保存在数据库中是这样的:0000-00-00

帮帮我。

【问题讨论】:

  • echo $date 会得到什么?
  • 很有趣,除非你没有在 mysql DATE 字段中传递错误的日期格式或日期,否则它永远不会变成 0000-00-00
  • 我不懂你的意思
  • 我假设提交的日期的数据类型为 DATE,如果您在保存时传递了一些错误的日期格式,现在将添加为 0000-00-00 以调试此回显查询并将其直接粘贴到 mysql看看会发生什么,您还将看到这些值是如何包含在查询中的。
  • 你能告诉我echo $sql 说什么吗?

标签: php mysql sql date insert


【解决方案1】:

如果您要获取当前日期,只需使用 built-in MySQL functions 之一:

$sql="INSERT INTO  `prg omran`.`paid`(`Comapny_id`,`Amount`,`Date`,`Creditrecord`) 
VALUES ('".$ID."','".$credit."',curdate(),'".$yes."')";

您不必担心格式或任何有趣的输入,您仍然可以使用许多其他功能之一进行各种加法、减法等。

编辑:我刚刚查找了some information on the date system,您在尝试将该数据压缩到日期字段时会遇到问题。前六个月有 31 天,接下来的 5 个月有 30 天,最后一个有 29 天 - 除非是闰年,在这种情况下它有 30 天。日期字段根本不会让您将这些值插入日期字段.

您可能需要将数据转换为时间戳并编写一个函数将其编码/解码为您需要的格式。

【讨论】:

  • 我无法使用此功能,因为我想保存波斯语(波斯语)日期
  • @Neda 我已经添加(我认为是)一个有趣的编辑/添加到我的答案。
  • 他在哪里说过他在日期字段中输入了无效日期?
【解决方案2】:

试试这个

$date = sprintf("%'04s-%'02s-%'02s",$year_number,$month_number,$day_number);

$sql="INSERT INTO  `prg omran`.`paid`(`Comapny_id`,`Amount`,`Date`,`Creditrecord`) VALUES      ('".$ID."','".$credit."',".$date.",'".$yes."')";

如果您想插入今天的日期,请使用

$sql="INSERT INTO  `prg omran`.`paid`(`Comapny_id`,`Amount`,`Date`,`Creditrecord`) 
VALUES ('".$ID."','".$credit."',curdate(),'".$yes."')";

【讨论】:

  • 我无法使用此功能,因为我想保存波斯语(波斯语)日期
  • 这行不通——您需要在 SQL 中将日期放在引号中。
  • 我认为在您的 sql 查询中 '".$date."' 这变成了错误,将其用作 ".$date."。
【解决方案3】:

我需要在数据库中存储日期字段,例如 VARCHAR(10),因为 mysql 服务器中的日期类型不支持波斯(波斯语)日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多