Выбрать из таблицы, где предложение из массива из другой таблицы - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь вставить отказоустойчивый код в код, чтобы они не пошли дальше, и некоторое время я почесал голову.Я могу поместить что-то в массив, но не могу получить элементы из массива, соответствующие второму запросу select.Я получаю Array вместо значения из элемента.

Мой первый запрос на выборку выглядит так:

$datohenter3 = "select DATE_FORMAT(datotid, '%Y.%m.%d') AS dato from gramorapport34 group by dato order by dato asc";
$hentdatoer = $db->query($datohenter3);

$periodedatoer = array();
for ($x = 1; $x <= $db->affected_rows; $x++) {
    $periodedatoer[] = $hentdatoer->fetch_assoc();
}

Затем я хочу сопоставить значения из этого массива с моим следующим запросом на выборку:

$rapportdatoer = "select fradato, tildato from gramorapportlogg WHERE  fradato IN('".$periodedatoer."') OR tildato IN('".$periodedatoer."')";
$rapportdatoeksist = $db->query($rapportdatoer);
if ( !$rapporteksist ) die('Database Error: '.$db->error);
    while($row = mysqli_fetch_array($rapportdatoeksist))
     {
        print_r($row);
     } 

Я получаю следующие ошибки:

Примечание: преобразование массива в строку для второго выбора

Ошибка базы данных: у вас есть ошибка в вашейСинтаксис SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать рядом с 'fradato IN (' Array ') ИЛИ tildato IN (' Array ')' в строке 1

Я не являюсьэксперт по запросам JOIN SELECT.Это использует MariaDB 10.3.12 с PHP7.2

var_dump, доступным по адресу: https://www.lokalradio.no/rapport/gramo/datohenttest.php

1 Ответ

0 голосов
/ 27 января 2019

Обратите внимание, что $periodedatoer является массивом массивов.Каждый элемент внутри имеет 1 ключ dato (как вы var_dump отображаете).

Поэтому используйте array-column , чтобы получить значения, а затем implode как:

$rapportdato = implode("','", array_column($periodedatoer, "dato"));

Теперь вы можете использовать $rapportdato во втором запросе как:

$rapportdatoer = "select fradato, tildato from gramorapportlogg WHERE  fradato IN('" . $rapportdato . "') OR tildato IN('" . $rapportdato . "')";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...