php - PHP从explode/foreach循环中获取id并计算价格
问题描述
我正在尝试将 MySQL 表中的所有 product_price 求和product_id
。
当我运行时$result = "SELECT SUM(product_price) AS product_price FROM products";
,它总结了所有正常工作的 product_price。
当我运行时$result = "SELECT SUM(product_price) AS product_price FROM products WHERE product_id = $school_product_id";
,它给了我一个数组错误。
我希望查询从explode
/获取所有 4 个 IDforeach
并显示总价。
正在展开的数据库字段看起来像“1,2,3,4”,product_id
在下products
表中匹配。
$row = $result->fetch_assoc();
$school_subject_products = $row["school_subject_products"]; // (output is 1,2,3,4)
$school_product_id = explode(',', $school_subject_products); // (explode 1,2,3,4 to use in query below to calculate all 4 product_id's product_price)
$result = "SELECT SUM(product_price) AS product_price FROM products WHERE product_id = ??????????"; //<------ how do I get it to search for all 4 product_ids and total the price of all the product_ids
$price_result = $mysqli->query($result);
$row = $price_result->fetch_assoc();
$sum = $row['product_price'];
echo $sum;
?>
解决方案
理想的解决方案是规范化您的数据,这样您就没有逗号分隔的列表。
如果你不能这样做,你可以使用JOIN
withFIND_IN_SET()
来匹配一个逗号分隔的列表,而不是执行多个查询并使用explode()
.
SELECT SUM(product_price) AS product_price
FROM products AS p
JOIN select_subject AS s ON FIND_IN_SET(p.product_id, s.school_subject_products)
WHERE school_id = $selected_school_id AND school_year_id = $selected_year_id AND school_subject_id = $school_subject_selected
推荐阅读
- css - 如何为特定的 react-google-login 组件设置样式
- github - 如何显示用户自己的问题?
- laravel - GroupBy 基于 laravel eloquent 中的多列
- jquery - 获取 div 内第一个跨度的背景颜色
- dart - RefreshIndicator 不更新 ListView 数据
- python - 覆盖变量时出错。以 10 为底的 int() 的无效文字:
- probability - 如何使用(修改)前向算法来计算子集观察的概率
- reactjs - 在github中发布应用程序后获取空白页面
- excel - 我如何比较两个数据范围,然后复制和粘贴不匹配的范围
- vb.net - 你如何关闭form1,打开form2并在返回form1并关闭form2后不久?我在参考时遇到问题