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