PHP - 数组的其他参数不起作用

时间:2014-07-16 16:48:59

标签: php mysql

目前在数组中有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");

结果仍然相同。编程非常新,非常感谢任何帮助,谢谢。

2 个答案:

答案 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。)

这将导致各种编程错误,例如尝试访问不存在的数组元素,以显示错误消息而不是安静地执行错误操作。