1

コードに問題があります:

<?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++;
    }
?>

私が実際にやりたいのは、テーブルから製品IDを取得し、その製品IDをtbl_order_item使用して、テーブルからそれらのIDの送料を選択することですtbl_product

たとえば、商品IDが2つある場合は、両方のIDの送料を選択する必要があります。ただし、ここでは、次のような1つの製品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
4

4 に答える 4

3

ORを使用できます。

SELECT shipping_us FROM tbl_product WHERE prod_id=526 OR prod_id=527
于 2012-12-21T09:16:29.960 に答える
2

このように使用することもできますIN

SELECT shipping_us FROM tbl_product WHERE prod_id IN (526,527)
于 2012-12-21T09:19:08.197 に答える
0

最初の解決策:

変化する

$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);

2番目の解決策(はるかに優れています):

$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 インジェクションを防ぐ方法を学ぶ: Good Link

2.Mysql 拡張機能は、新しいコードの作成には推奨されません。代わりに、mysqli または PDO_MySQL 拡張機能を使用する必要があります。詳細: PHP マニュアル

于 2012-12-21T09:24:47.983 に答える
0

私の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'];
          }
        }
    }

?>
于 2012-12-22T04:43:46.820 に答える