从另一个表的数组中的table where子句中选择
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个表的数组中的table where子句中选择相关的知识,希望对你有一定的参考价值。
我正在尝试在代码中插入故障安全措施,以防止它们更进一步,我现在已经摸不着头脑了。我能够将一些东西放入数组中,但是我无法从数组中获取项目以匹配第二个选择查询。我只获取数组而不是项目中的值。
我的第一个选择查询是这样的:
$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
答案
请注意,$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 . "')";
以上是关于从另一个表的数组中的table where子句中选择的主要内容,如果未能解决你的问题,请参考以下文章