【发布时间】:2018-10-13 10:33:39
【问题描述】:
在 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?
【问题讨论】:
-
用单引号试试:
$query="insert into `test_day` (`tday`) values ('".$day."')"; -
看来你使用的是PDO库;那么你真的应该把你的查询改成Prepared Statements。
-
添加
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);,错误将开始向你大喊 -
@MadhurBhaiya - 我支持这一点,如果你在循环之外准备它,它实际上会运行得更快一点。因为它只需要解释查询 1 次并执行 {n} 次。