Closed. This question needs details or clarity。它目前不接受答案。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
5年前关闭。
我试图在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”,我应该怎么做?

最佳答案

您需要更改此行:

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.'"
而双引号要求在值中'$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));

会发出以下错误的信号:
分析错误:语法错误,在。。。
但是,使用此方法可以打开SQL injection
使用prepared statementsPDOprepared statements一起使用。
“我正在尝试向varchar字段插入新列”
我建议不要使用VARCHAR来存储日期/时间,因为当您稍后决定查询日期差异等时,只会使它变得更加困难。
以下是一些列类型:
日期
日期时间
时间戳
时间

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

关于php - 无法将日期插入列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26518385/

10-14 13:46
查看更多