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的总价。。。。。现在我想你明白了我想做的是。。。。请帮忙。。。。