PHP运行查询关闭每个数组变量并返回表中的结果

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

我试图从多个数组变量运行查询并在表中显示结果。

用户选择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>";          
php for-loop foreach while-loop html-table
1个回答
0
投票

如果您的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以进行查询。学习需要一个小时。

© www.soinside.com 2019 - 2024. All rights reserved.