我的用户发布了一系列类别,然后我需要根据用户选择的类别数组从表中选择费率。 到目前为止,我已经能够使这个工作正常。
示例:
阵列类别:汽车零件,自行车,饼干,吊扇,搅拌机,艺术品
返回阵列费率:60,35,25,20,15,5
然后我根据费率数组中选择的费率进行计算。如果数组中没有重复值,我下面的代码可以正常工作。
我遇到的问题是,如果用户输入两次类别,则返回的数组仅返回输入类别的一个实例的费率
示例:
阵列类别:汽车零件,自行车,饼干,吊扇,自行车,搅拌机,饼干,艺术品
返回阵列费率:60,35,25,20,15,5
应该是什么 - >阵列费率:60,35,25,20,35,15,25,5
返回的数组正在丢弃重复的速率值,但我需要根据返回数组的每一行中的速率进行计算。
我现在不知道如何使返回的值保留在返回的数组中。任何帮助都会很棒,或者我可以用其他方式做任何建议。
$qty=mysql_real_escape_string($_POST['qty'];
$pcategories=mysql_real_escape_string($_POST['pcategories'];
<?php foreach($qty as $a => $b){ ?>
<?php // Get the duty rate based on the product categorie user selected
$connection = mysqli_connect("localhost","root","","customs") or `enter
code here`die("Error " . mysqli_error($connection));
$sql = "
SELECT `categories`, `rate`
FROM `lt_products`
WHERE `categories` IN ('".implode("','",$pcategories)."')
ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";
$result = mysqli_query($connection, $sql)or die(mysql_error());
while($row = mysqli_fetch_assoc($result)) {
$row_rate[] = $row["rate"];
}
$rate_row[] = $row_rate[$a];
?>
答案 0 :(得分:0)
您的SQL语句不依赖于$a
和$b
,那么为什么不从foreach循环中取出它?每次循环都不需要向数据库询问相同的数据。
然后你可以替换这段代码
while($row = mysqli_fetch_assoc($result)) {
$row_rate[] = $row["rate"];
}
使用此代码
while($row = mysqli_fetch_assoc($result)) {
$row_rate[$row["categories"]] = $row["rate"];
}
然后添加此代码
$result_rate = []; //or array() - depends on your PHP version
foreach ($pcategories as $pcat) {
$result_rate[] = $row_rate[$pcat];
}
现在您有一个与您的输入类别数组相对应的$result_rate
数组,因此您可以替换此代码
$rate_row[] = $row_rate[$a];
使用此代码
$row_rate[] = $result_rate[$a];
这里是完整的建议代码:
$qty=mysql_real_escape_string($_POST['qty'];
$pcategories=mysql_real_escape_string($_POST['pcategories'];
<?php // Get the duty rate based on the product categorie user selected
$connection = mysqli_connect("localhost","root","","customs") or `enter code here`die("Error " . mysqli_error($connection));
$sql = " SELECT `categories`, `rate`
FROM `lt_products`
WHERE `categories` IN ('".implode("','",$pcategories)."')
ORDER BY FIELD(categories, '".implode("','",$pcategories)."')";
$result = mysqli_query($connection, $sql)or die(mysql_error());
while($row = mysqli_fetch_assoc($result)) {
$row_rate[$row["categories"]] = $row["rate"];
}
$result_rate = []; //or array() - depends on your PHP version
foreach ($pcategories as $pcat) {
$result_rate[] = $row_rate[$pcat];
}
$rate_row = []; //or array() - depends on your PHP version
<?php foreach($qty as $a => $b){
$rate_row[] = $result_rate[$a];
?>