0

我正在尝试为 2 个数组创建一个循环,但我遇到了创建重复条目的冲突……我想我只是创建了错误的循环。

        foreach($productIds as $productID){

            foreach($qty as $q) {
$sql = "INSERT INTO orderedProducts (productID, orderID, qty) VALUES 
((select productID from products where productID ='$productID'), '$orderID', '$q')";
           execute_query($sql);

                 }
           }

如果我删除 qty 循环并只是硬编码其中的 qty 工作正常。有什么方法可以将这两个循环结合起来吗?

4

2 回答 2

1

对此使用INSERT INTO...SELECT声明,

INSERT INTO orderedProducts (productID, orderID, qty) 
SELECT productID, '$orderID', '$q'
FROM   products
WHERE  productID = '$productID'

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-03-25T07:10:30.930 回答
0

找出问题所在......不能使用它只是搞砸的foreach循环,我只是使用了数组的索引

    for($i =0 ; $i < sizeof($productIds);$i++){ 
$sql = "INSERT INTO orderedProducts (productID, orderID, qty) VALUES ((select productID from products where productID ='$productIds[$i]'), '$orderID', '$qty[$i]')";
        execute_query($sql);
       }
于 2013-03-25T08:19:53.327 回答