我正在尝试将新列插入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”这样的月份和年份,我应该怎么做?
答案 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
来存储日期/时间,因为当你后来决定查询日期差异等时,它只会让它变得更难。
以下是几种列类型:
另外,您可以使用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。插入时你不会在插入中包含字段,那将会很好用