我有一个由GET方法发送到另一个页面的id数组,在那个页面我正在爆炸“,”并将$ _GET值保存在一个数组中,我的目标是使用数组中的每个id相同的查询,其中每个查询之间的区别仅在于id =从数组中检索的id,然后获取名为amount的列名并将其与其他数量的其他ID一起添加,我该如何实现?我可以循环查询的变量名吗?像增量$ sql。$ i?
我当前的查询:
for ($i=0;$i<count($claimID);++$i) {
$sql="SELECT ... and subscriptions.subscription_Id=".$claimID[$i]; } // should i try to figure out a way to increment $sql with $i ?
然后
$resultSql = $conn->query($sql); // I should loop somehow
$row = mysqli_fetch_array($resultSql);
在此之后我想让所有查询选择不同的ID + +它们的每个列“金额”,我可以得到一些提示/建议吗?
答案 0 :(得分:1)
你能做的是:
$claimID = implode(',', $_GET['ids']);
$sql = 'SELECT
SUM(amount),
GROUP_CONCAT( subscription_Id ),
GROUP_CONCAT( amount )
... and subscriptions.subscription_Id
IN (' . $claimID . ')';
您将获得与您刚刚收到的IDS相关的所有金额的总和。
但请注意 SQL注入,因为您使用的是纯SQL。
检查mysqli_real_escape_string
等功能。
答案 1 :(得分:0)
使用IN
mysql获取所有ID的所有数据,稍后使用PHP逻辑可以分离数据。另外,根据标准,不能有多个sql查询或循环mysql查询。
$sql = "SELECT ... and subscriptions.subscription_Id IN (...)";
$resultSql = $conn->query($sql);
$row = mysqli_fetch_array($resultSql);
在此之后,您可以在php中实现任何逻辑并根据需要获取数据。 参考:https://www.w3resource.com/mysql/comparision-functions-and-operators/in-function.php