PHP Использовать массив (с более раннего, пока l oop) для запроса нового foreach - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь сделать динамический запрос c, используя фильтры даты начала / окончания, чтобы отобразить единицы измерения за дату. Я уже запрашиваю, какие строки доступны между начальной и конечной датой в базе данных, и он создает массив вроде: (array ("2020-03-01", "2020-03-02", 2020-03-03"). Когда я хочу использовать этот массив в другом foreach для получения связанных единиц в день, я не получу никакого результата. Большой вопрос: что я делаю не так?

Первый раз, когда l oop:

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {

      $date = $row["datetime"];

      $filterDates[] = '"'.$row["datetime"].'", ';
      }
}

При использовании этого foreach я получаю результаты.

foreach (array("2020-03-10 00:00:00", "2020-03-11 00:00:00", "2020-03-12 00:00:00", "2020-03-13 00:00:00", "2020-03-14 00:00:00", ) as &$sqlDate)

При использовании этого foreach я не получу результаты.

foreach (($filterDates) as &$sqlDate)

Это запрос 'dynamici c', который я использую для получения единиц в день

  $sql = "SELECT `datetime`, `period`, `units` , SUM(`Units`) AS 'units' FROM `Subscriptions_raw` WHERE `datetime` LIKE '%".$sqlDate."%' AND `period` = '1 Month' GROUP BY `datetime`";
  $result = $mysqli->query($sql);

        for ($set = array (); $row = $result->fetch_assoc(); $set[] = $row);

        echo $set[0]["units"].", ";
}

1 Ответ

1 голос
/ 26 марта 2020

При добавлении дат в ...

$filterDates[] = '"'.$row["datetime"].'", ';

Вы добавляете в массив дату типа ...

"2020-03-10 00:00:00",

, которая не соответствует дате в база данных (вряд ли в любом случае).

Вам просто нужно добавить дату без дополнительной разметки ...

$filterDates[] = $row["datetime"];
...