无法在列中插入日期

时间:2014-10-22 22:44:10

标签: php mysql

我正在尝试将新列插入varchar字段

我的代码

    $time = time();
    $ndate = date('m-y', $time);
    echo $ndate;
    mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))';

它应该是10-14

但结果是-4

如果我想插入像“10-14”或“10/14”这样的月份和年份,我应该怎么做?

5 个答案:

答案 0 :(得分:2)

MySQL日期格式为yyyy-mm-dd,因此您需要格式化日期,如下所示:

$ndate = date('Y-m-d', $time);

您的INSERT语句也需要更改为:

mysqli_query($conadd,"INSERT INTO nnn (`month`) VALUES ('$ndate')";

答案 1 :(得分:2)

您需要更改此行:

mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))' ;
                                                     misplaced ^ ^ move here

要么:(顺便说一下,最后一个括号是错位的)

mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ("'.$ndate.'")');

mysqli_query($conadd,"INSERT INTO nnn (`month`) VALUES ('$ndate')");

使用单个封装引号需要引用$ndate变量=> "'.$ndate.'"

虽然双重封装引号要求它在VALUES中为'$ndate'

不这样做,SQL将此解释为执行数学问题,这意味着连字符被解释为减号。

即:10减22(基于今天的日期),导致SQL错误。


使用or die(mysqli_error($conadd))会发出以下错误信号:

  

'字段列表'中的未知列'$ ndate'

支架是否在正确的位置:

mysqli_query($conn,'INSERT INTO nnn (`month`) VALUES ($ndate)')  
   or die(mysqli_error($conadd));

使用它并使用您发布的代码:

mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))'  
   or die(mysqli_error($conadd));

会发出以下错误信号:

  

解析错误:语法错误,意外';'在...



  

“我正在尝试向varchar字段插入新列”

我建议不要使用VARCHAR来存储日期/时间,因为当你后来决定查询日期差异等时,它只会让它变得更难。

以下是几种列类型:

  • DATE
  • DATETIME
  • 时间戳
  • TIME
  • YEAR

另外,您可以使用SQL的内置NOW()函数来存储当前时间/日期。

答案 2 :(得分:1)

将日期格式更改为:

date('Y-m-d', $time);

答案 3 :(得分:1)

日期必须以有效格式表示。请阅读以下文章中的更多内容。

The DATE, DATETIME, and TIMESTAMP Types
Date and Time Literals

答案 4 :(得分:1)

$time = time();
$ndate = date('m-y', $time);
echo $ndate;
mysqli_query($conadd,'INSERT INTO nnn (`month`) VALUES ($ndate))';

当我查看上面的代码时,我看到你只是使用当前时间和日期,那么为什么不在数据库中将字段dataType设置为datetime并将默认值设置为current_timestamp。插入时你不会在插入中包含字段,那将会很好用