簡體   English   中英

如何從表中獲取多個結果並在查詢中使用它們

[英]How fetch more than one result from the table and use them in query

我的代碼有問題:

<?php 
    echo $s_country;
    $sql2="SELECT prod_id FROM tbl_order_item WHERE order_id='$order_id'";
    $res=mysql_query($sql2) or die(mysql_error());
    $i=0;
    $j="";
    while($rs=mysql_fetch_array($res)){
        $j = $rs['prod_id']; 
        if(trim($s_country)=='US' || trim($s_country=='United States' )){
            $sql3 = "SELECT shipping_us FROM tbl_product WHERE prod_id=".$j;
            $res=mysql_query($sql3) or die(mysql_error());
            $shipping_cost1=mysql_fetch_object($res);  
        }
        $i++;
    }
?>

我真正想要做的是從表tbl_order_item獲取產品ID,並使用該產品ID從表tbl_product選擇這些ID的tbl_product

例如,如果有兩個產品ID,則應為兩個ID選擇運費。 但是在這里,它僅適用於這樣的一種產品ID:

SELECT shipping_us FROM tbl_product WHERE prod_id=526

但是我想做的是:

SELECT shipping_us FROM tbl_product WHERE prod_id=526
SELECT shipping_us FROM tbl_product WHERE prod_id=527

您可以使用OR,例如

SELECT shipping_us FROM tbl_product WHERE prod_id=526 OR prod_id=527

您也可以IN像這樣使用它

SELECT shipping_us FROM tbl_product WHERE prod_id IN (526,527)

第一個解決方案:

更改

$res=mysql_query($sql3) or die(mysql_error()); // you have overwritten result set of first query
$shipping_cost1=mysql_fetch_object($res);  

$newres=mysql_query($sql3) or die(mysql_error());
$shipping_cost1=mysql_fetch_object($newres);

第二個解決方案(更好):

$sql2="SELECT GROUP_CONCAT(prod_id SEPARATOR ',') as pid FROM tbl_order_item WHERE order_id='$order_id'";
$res=mysql_query($sql2) or die(mysql_error());

if(mysql_num_rows($res) > 0){
  $rs=mysql_fetch_array($res);
  $sql3 = "SELECT shipping_us FROM tbl_product WHERE prod_id IN (".$rs['pid'].")";
  $res=mysql_query($sql3) or die(mysql_error());
  while ($row = mysql_fetch_array($res)){
     echo $row['shipping_us']
  }
}

建議:

1.Learn從MySQL注射,以防止: 很好的鏈接

2.不建議使用Mysql擴展名編寫新代碼。 相反,應使用mysqli或PDO_MySQL擴展名。 更多閱讀: PHP手冊

我的pblm已解決...以及對GBD的特殊tnx。

這是我的最終代碼...

  <?php

     echo $s_country;

    $sql2="SELECT GROUP_CONCAT(prod_id SEPARATOR ',') as pid FROM tbl_order_item WHERE order_id='$order_id'";
    $res=mysql_query($sql2) or die(mysql_error());
    $shipping_cost1 = 0;

    if(mysql_num_rows($res) > 0){
      $rs=mysql_fetch_array($res);

      if(trim($s_country)=='US' || trim($s_country=='United States' )){
        $sql3 = "SELECT shipping_us FROM tbl_product WHERE prod_id IN (".$rs['pid'].")";
        $res=mysql_query($sql3) or die(mysql_error());
        if(mysql_num_rows($res) > 0){ 
          while ($row = mysql_fetch_array($res)){
           $shipping_cost1 = $shipping_cost1 + $row['shipping_us'];
          }
        }
      } else {
          $sql3 = "SELECT shipping_outside FROM tbl_product WHERE prod_id IN (".$rs['pid'].")";
          $res=mysql_query($sql3) or die(mysql_error());
          while ($row = mysql_fetch_array($res)){
            $shipping_cost1= $shipping_cost1 + $row['shipping_outside'];
          }
        }
    }

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM