从另一个表的数组中的table where子句中选择

问题描述 投票:1回答:1

我正在尝试在代码中插入故障安全措施,以防止它们更进一步,我现在已经摸不着头脑了。我能够将一些东西放入数组中,但是我无法从数组中获取项目以匹配第二个选择查询。我只获取数组而不是项目中的值。

我的第一个选择查询是这样的:

$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();
}

然后我想将此数组中的值与我的下一个select查询匹配:

$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')附近使用正确的语法,或者在第1行使用tildato IN('Array')'

我不是JOIN SELECT查询的专家。这是使用MariaDB 10.3.12和PHP7.2

var_dump位于:https://www.lokalradio.no/rapport/gramo/datohenttest.php

php mysql arrays mysqli
1个回答
0
投票

请注意,$periodedatoer是一个数组数组。里面的每个元素都有一个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 . "')";
© www.soinside.com 2019 - 2024. All rights reserved.