目前在数组中有Date1到Date2的日期列表,然后尝试将mysql数据库中的日期添加到数组中。从那里开始,数据库中的日期和date1和date2之间的日期应该说是因为不采用数据库中没有的那些日期。到目前为止的代码是:
<?php
date_default_timezone_set('America/Chicago');
$con = mysqli_connect("localhost", "apple", "Orange1", "cal");
$date1 = new DateTime('2014-06-10'); // From date: 10/06/2014
$date2 = new DateTime('2014-06-30'); // To date: 30/06/2014
$datesTaken = array();
$result = mysqli_query($con, "SELECT `events` FROM `events`"); //get dates from events table
while ($row = mysqli_fetch_array($result)) { //iterate over each row in SQL
$datesTaken[] = new DateTime($row['date1']); //add taken dates into array //add dates to the $datesTaken array.
}
while ($date1 <= $date2) { //loop until dates are equal
if (in_array($date1, $datesTaken)) { //if the date is in the datesTaken array it is taken
echo $date1->format("Y-m-d") . " taken. <br />"; //Dates which are taken
}
else {
echo $date1->format("Y-m-d") . " not taken. <br />"; //Dates which aren't taken
}
date_add($date1, date_interval_create_from_date_string('1 day')); //adding a day to $day1 then looping through again unless $date1 is greater
}
?>
目前代码的结果是:
2014-06-10未拍摄。
2014-06-11未拍摄。
2014-06-12未拍摄。
2014-06-13未拍摄。
2014-06-14未拍摄。
2014-06-15未采取。
2014-06-16未拍摄。
2014-06-17未采取。
2014-06-18未拍摄。
2014-06-19未拍摄。
2014-06-20未拍摄。
2014-06-21未拍摄。
2014-06-22未拍摄。
2014-06-23未拍摄。
2014-06-24未采取。
2014-06-25未拍摄。
2014-06-26未采取。
2014-06-27未拍摄。
2014-06-28未拍摄。
2014-06-29未拍摄。
2014-06-30未采取。
目前数据库中具有相同格式的两个日期是:&#34; 2014-06-14&#34;和&#34; 2014-06-15&#34;我已经尝试完全删除mysqli查询,只是简单地使用
$datesTaken = array("2014-06-14","2014-06-15");
结果仍然相同。编程非常新,非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
您的查询错误,因为我不确定列名称,可能是以下任何一种可能。
SELECT `events` as date1 FROM `events`
或
SELECT `date1` FROM `events`
答案 1 :(得分:0)
$row
数组不包含键“date1”。由于您使用的是mysqli_fetch_array
,因此$row
数组将包含键“0”以及与您的列名匹配的键,即“事件”(两者都具有相同的值)。
为了帮助将来发现此类问题,我建议您在脚本中启用严格错误:
error_reporting(E_ALL | E_STRICT);
(根据您的PHP版本,可能不需要| E_STRICT
。)
这将导致各种编程错误,例如尝试访问不存在的数组元素,以显示错误消息而不是安静地执行错误操作。