SQL 查询显示的行数不超过 1 行


SQL query not showing more than 1 row

这是错误必须在查询 3 或 4 中的完整代码。如您所见,查询 3 仅获取构建查询 4 的信息,该查询应返回结果。

我有查询 1 和 2 工作正常,它们显示了正确的数据。

<?php
session_start();
//printf('<pre>%s</pre>', print_r($_SESSION, true));
require('includes/config.inc.php');
require('includes/session.php');
//WORKING
DB_Connect();
$query = "SELECT * FROM food_delivery_orders_items WHERE food_delivery_orders_items.type = 'product' AND food_delivery_orders_items.order_id=".$_SESSION['pdf_quote']['id']."";
$result = mysql_query( $query) or die(mysql_error());
while($row = mysql_fetch_array($result)) 
            {
         $hash = $row['hash'];
         $foreignid = $row['foreign_id'];
          $qty = $row['cnt'];                   
            }

$query2 = "SELECT * FROM food_delivery_products WHERE food_delivery_products.id = ".$foreignid."";
$result2 = mysql_query( $query2) or die(mysql_error());
while($row = mysql_fetch_array($result2)) 
            {
         $name = $row['name'];
         $description = $row['description'];                
            }

    //---------------------------------------------------------------------------------------------------------------
    $query3 = "SELECT * FROM food_delivery_orders_items WHERE food_delivery_orders_items.type = 'extra' AND food_delivery_orders_items.order_id=".$_SESSION['pdf_quote']['id']."";
$result3 = mysql_query( $query3)or die(mysql_error()) ;
while($row = mysql_fetch_array($result3)) 
            {
         $foreignidextra = $row['foreign_id'];  
         $qtyextra = $row['cnt'];           
            }

            $query4 = "SELECT * FROM food_delivery_extras WHERE food_delivery_extras.id = ".$foreignidextra."";
$result4 = mysql_query( $query4) or die(mysql_error());
while($row = mysql_fetch_array($result4)) 
            {
         $nameextra = $row['name'];
            }
    echo $nameextra;
    echo $qtyextra;
DB_Disconnect();


//$products = implode(", ",$_SESSION['pdf_quote']['product_arr']);;
//print $products
?>

print $row; 仅在要打印所有内容时才在循环内有效。否则,它将仅打印最后$row。来得及

while($row = mysql_fetch_array($result3)) 
{
    $foreignidextra = $row['foreign_id'];   
    $qtyextra = $row['cnt'];            
    print $row;
}

这是因为您在执行while循环后打印$row

所以它只打印最终的结果集

请改用这样的东西:

$query3 = "SELECT * FROM food_delivery_orders_items WHERE food_delivery_orders_items.type = 'extra' AND food_delivery_orders_items.order_id=".$_SESSION['pdf_quote']['id']."";
$result3 = mysql_query( $query3) ;
while($row = mysql_fetch_array($result3)) 
{
    $foreignidextra = $row['foreign_id'];   
    $qtyextra = $row['cnt']; 
    print_r($row);           
}

您也可以使用 var_dump($row); 代替print_r($row);

这将在每次循环迭代时输出存储在 $row 数组中的所有值