PHP运行查询关闭每个数组变量并返回表中的结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP运行查询关闭每个数组变量并返回表中的结果相关的知识,希望对你有一定的参考价值。
我试图从多个数组变量运行查询并在表中显示结果。
用户选择1个或多个记录,其中包括BOL和CONTAINER。这些选择放在它们自己的数组中,它们总是相等的数量。
<?php
$bolArray = explode(',', $_POST['BOL']);
$containerArray = explode(',', $_POST['CONTAINER']);
$count = count($bolArray); // to get the total amount in the arrays
我使用FOR循环将每个值与2个数组分开:
for($i = 0; $i < $count; $i++)
{
$bol = $bolArray[$i];
$container = $containerArray[$i];
}
这是我被卡住的部分,可能是我弄乱的地方。
我需要从FOR循环中获取每个变量并使用这两个变量运行查询。
首先,我将开始表:
echo "<table><thead><tr><th>BOL</th><th>Container</th></thead><tbody>";
这是我尝试FOREACH循环的地方:
foreach($containerArray as $container) // I am not sure if I am using this FOREACH correctly
{
而现在,查询。请注意第一个FOR循环中的变量:
$preQuery = "SELECT * FROM mainTable WHERE CONTAINER = '".$container."' AND BOL = '".$bol."'";
$preRes = mysql_query($preQuery) or die(mysql_error());
$preNum = mysql_num_rows($preRes);
我使用带有mysql_fetch_assoc的WHILE循环:
while($preRow = mysql_fetch_assoc($preRes))
{
echo '<tr>'
echo '<td>'.$preRow[BOL_NUMBER].'</td>';
echo '<td>'.$preRow[CONTAINER_NUMBER].'</td>';
echo '<td>'.$preRow[ANOTHER_COLUMN].'</td>';
echo '</tr>'
}
}
echo '</tbody></table>';
?>
查询实际上有效。问题是,它只返回1条记录,而且它始终是最后一条记录。用户可以选择4条记录,但只返回表中的最后一条记录。
我尝试使用相同的查询并将其粘贴到第一个FOR循环中。我回显了查询,它显示的数量与数组值的数量相同,但只返回最后一条记录的数据。
我不明白我做错了什么。我只想显示数组中每个值的数据。
编辑
以下是我在第一个FOR循环中抛出查询时代码的样子:
echo "<table class='table table-bordered'><thead><tr><th>BOL</th><th>Container</th></tr></thead><tbody>";
for($i = 0; $i < $count; $i++)
{
$bol = $bolArray[$i];
$container = $containerArray[$i];
$preQuery = "SELECT BOL_NUMBER, CONTAINER_NUMBER FROM `intermodal_main_view` WHERE BOL_NUMBER = '". $bol ."' AND CONTAINER_NUMBER = '".$container."'";
$preRes = mysql_query($preQuery) or die();
$preNum = mysql_num_rows($preRes);
while($preRow = mysql_fetch_assoc($preRes))
{
echo '<tr>';
echo '<td>'.$preRow[BOL_NUMBER].'</td>';
echo '<td>'.$preRow[CONTAINER_NUMBER].'</td>';
echo '</tr>';
}
}
echo "</tbody></table>";
答案
如果您的POST变量以逗号分隔,我认为您可以使用“IN”。
$preQuery = "SELECT * FROM mainTable WHERE CONTAINER IN ($_POST['CONTAINER']) AND BOL IN ($_POST['BOL']);
$preRes = mysql_query($preQuery) or die(mysql_error());
$preNum = mysql_num_rows($preRes);
然后去你的while循环....
这将省略创建数组并循环它的需要。
此外,您需要切换到PDO以进行查询。学习需要一个小时。
以上是关于PHP运行查询关闭每个数组变量并返回表中的结果的主要内容,如果未能解决你的问题,请参考以下文章