我正试图在代码中插入故障保险,以防止它们进一步发展,而且我已经摸索了一段时间。我可以将某些东西放入数组中,但是无法从数组中获取项目以匹配第二个选择查询。我只会得到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服务器版本相对应的手册以获取正确的语法,以在第1行的'fradato IN('Array')或tildato IN('Array')'附近使用
我不是JOIN SELECT查询的专家。这是结合使用MariaDB 10.3.12和PHP7.2
var_dump可通过以下网址获得:https://www.lokalradio.no/rapport/gramo/datohenttest.php
答案 0 :(得分:0)
请注意,$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 . "')";