使用以下代码尝试使用爆炸数组变量运行单个查询:
<?php
$containers = $_POST['cntnum'];
$containersArray = preg_replace('/\n$/','',preg_replace('/^\n/','',preg_replace('/[\r\n]+/',"\n",$containers)));
$count = count($containersArray);
for($i = 0; $i < $count; $i++)
{
$container = $containersArray[$i];
$cntFixed = "'".$container."',";
}
$select = "SELECT container, date, pool FROM inventory WHERE container IN (".$ctnFixed.")";
$query = mysqli_query($dbc, $select) or die(mysqli_error());
?>
当我将$ cntFixed传递给查询时。我没有得到数组中的所有变量。相反,我只得到带有结尾逗号的最后一个变量,如我在此处打印到控制台时所示:
"SELECT container, date, pool FROM inventory WHERE container IN ('variable3',)"
当然,结束逗号会抛出查询,所以我需要考虑到这一点。
我无法将查询放入for循环中,因为查询运行查询的次数与数组计数相同。
我需要做的是使用传递给查询的所有变量运行查询一次。
当我将其打印到控制台时,查询应如下所示:
"SELECT container, date, pool FROM inventory WHERE container IN ('variable1', 'variable2', 'variable3')"
答案 0 :(得分:2)
最简单的方法是创建一个数组,然后将implode创建为一个字符串。您似乎已经在$containersArray
中拥有了数据,因此请使用它,除非您出于某种原因需要构建另一个数组。然后像这样添加:
$select = "SELECT container, date, pool FROM inventory WHERE container IN ('".implode("','",$containersArray."')";
请注意这不安全,可以打开SQL注入和讨厌的引用问题。相反,使用prepared statements,您可以以相同的方式构建占位符。
答案 1 :(得分:0)
您必须使用<div class="header">
<ul class="nav nav-pills justify-content-end">
<li class="active"><a data-toggle="pill" class="nav-link active" href="#">About</a></li>
<li> <a data-toggle="pill" class="nav-link" href="#">Portfolio</a></li>
<li><a data-toggle="pill" class="nav-link" href="#">Contact</a></li>
</ul>
</div>
运算符
这里的PHP文档: http://php.net/manual/en/language.operators.assignment.php
然后记得删除最后一个.=