查询的每个循环两个

时间:2013-03-25 07:08:26

标签: php mysql foreach

我正在尝试为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循环并且只是对其进行硬编码就可以了。是否有某种方法来组合这两个循环?

2 个答案:

答案 0 :(得分:1)

使用INSERT INTO...SELECT语句,

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

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

答案 1 :(得分: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);
       }