使用数组值作为查询中的where子句并递增查询的数字php

时间:2018-02-22 07:05:27

标签: php mysql arrays dynamic

我有一个由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 + +它们的每个列“金额”,我可以得到一些提示/建议吗?

2 个答案:

答案 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