为什么不能用php将日期写入mysql?

z9zf31ra  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(349)

这个问题在这里已经有答案了

在mysql中何时使用单引号、双引号和反引号(13个答案)
两年前关门了。
在php shell中创建一系列日期。

$sDate = "2018-09-03";
for($i=0;$i<5;$i++){
    $number = 7*$i;
    $day=date("Y-m-d",strtotime("$sDate  + $number day"));
    echo $day."\n";
}

结果如下:

2018-09-03
2018-09-10
2018-09-17
2018-09-24
2018-10-01

创建包含表的数据库。

create database `test_day`;
create table test_day( `tday`  date);

我想把所有的日期都写进表格 test_day .

$dsn = "mysql:host=localhost;dbname=test_day";
$con = new PDO($dsn,"root","xxxxx");
$sDate = "2018-09-03";
for($i=0;$i<18;$i++){
    $number = 7*$i;
    $day=date("Y-m-d",strtotime("$sDate  + $number day"));
    $query="insert into `test_day` (`tday`) value ($day)";
    $con->query($query);
}

现在选择你想要的 test_day .

select * from  test_day;
+------------+
| tday       |
+------------+
| 0000-00-00 |
| 0000-00-00 |
| 0000-00-00 |
| 0000-00-00 |
| 0000-00-00 |
+------------+

为什么不能把白天的连续剧写进 test_day ?

2uluyalo

2uluyalo1#

你必须把日期放在单引号之间。
查询现在如下所示:

insert into `test_day` (`tday`) values (2018-09-03)

但必须是:

insert into `test_day` (`tday`) values ('2018-09-03')

将代码更改为:

$query = "insert into `test_day` (`tday`) values ('$day')";

编辑
我同意那些为了安全和效率而建议使用事先准备好的声明的人。在您的例子中,代码可以是这样的:

$dsn = "mysql:host=localhost;dbname=test_day";
$con = new PDO($dsn,"root","xxxxx");
$sDate = "2018-09-03";

for ($i=0; $i < 18; $i++){
    $number = 7*$i;
    $day = date("Y-m-d",strtotime("$sDate  + $number day"));

    // Prepare the statement
    $statement = $con->prepare("INSERT INTO `test_day` (`tday`) VALUES (?)");

    // Fill the string placeholder and execute the statement.
    $statement->execute("s", $day);
}

相关问题