Php 如何从表中获取多个结果并在查询中使用它们

Php 如何从表中获取多个结果并在查询中使用它们,php,Php,我的代码有问题: <?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_

我的代码有问题:

<?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++;
    }
?>
但我想做的是:

SELECT shipping_us FROM tbl_product WHERE prod_id=526
SELECT shipping_us FROM tbl_product WHERE prod_id=527
你可以用,或者

SELECT shipping_us FROM tbl_product WHERE prod_id=526 OR prod_id=527
你可以用,或者

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

您也可以将其与中的
一起使用

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

您也可以将其与中的
一起使用

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

第一个解决方案:

$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']
  }
}
改变

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

第二种解决方案(更好):

$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.学会防止MySQL注入:


2.编写新代码时不建议使用Mysql扩展。相反,应该使用mysqli或PDO_MySQL扩展。更多阅读:

第一个解决方案:

$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']
  }
}
改变

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

第二种解决方案(更好):

$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.学会防止MySQL注入:


2.编写新代码时不建议使用Mysql扩展。相反,应该使用mysqli或PDO_MySQL扩展。更多阅读:

我的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'];
          }
        }
    }

?>

我的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'];
          }
        }
    }

?>

高gbd。。。我用了你的密码。。。它的工作。。。但是我的计算部分需要你多一点帮助。。我会发布代码…嗨,gdb,请在这里留言。。。在得到每种产品的运输成本后,它应该乘以其数量和价格。。。。然后求出两个乘积的总和。。。你能帮我吗?这是我的计算部分$sales\u tax=$order\u total*10/100;如果($s_country=='US'和&$s_state='IL''){$totalprice=$order_total+$shipping_cost1+$sales_tax;}其他($s_country='US'和&$s_state!='IL'){$totalprice=$order_total+$shipping_cost1;}$totalprice=number_格式($totalprice,2,'.'','');我试过。。。但是它没有得到正确的总数…它应该像这样工作。。。在得到每种产品的运输成本后,它应该乘以其数量和价格。。。。然后将两种产品的总成本相加…例如:在db中,两种产品526和527的运输成本不同,即526的运输成本为14.99,其中527的成本为22.95。。。所以当客户订购两台526和一台527时。。。它应该这样计算526=2*运费(526)+2*价格(526)和527=1*运费(527)+1*价格(527)。。。。最后,总计=526的总价+527的总价。。。。。现在我想你明白了我想做的是。。。。请帮忙…你好,gbd。。。我用了你的密码。。。它的工作。。。但是我的计算部分需要你多一点帮助。。我会发布代码…嗨,gdb,请在这里留言。。。在得到每种产品的运输成本后,它应该乘以其数量和价格。。。。然后求出两个乘积的总和。。。你能帮我吗?这是我的计算部分$sales\u tax=$order\u total*10/100;如果($s_country=='US'和&$s_state='IL''){$totalprice=$order_total+$shipping_cost1+$sales_tax;}其他($s_country='US'和&$s_state!='IL'){$totalprice=$order_total+$shipping_cost1;}$totalprice=number_格式($totalprice,2,'.'','');我试过。。。但是它没有得到正确的总数…它应该像这样工作。。。在得到每种产品的运输成本后,它应该乘以其数量和价格。。。。然后将两种产品的总成本相加…例如:在db中,两种产品526和527的运输成本不同,即526的运输成本为14.99,其中527的成本为22.95。。。所以当客户订购两台526和一台527时。。。它应该这样计算526=2*运费(526)+2*价格(526)和527=1*运费(527)+1*价格(527)。。。。最后,总计=526的总价+527的总价。。。。。现在我想你明白了我想做的是。。。。请帮忙。。。。