如何解决数据未使用PDO PHP中的数组foreach函数插入DB中
当我用不同的输入和相同的名称用PHP将数据发送到服务器时,无法通过foreach
函数插入数据库。
我尽力了,stackoverflow上所有其他可用的功能,但它们对我没有帮助。
请帮助我如何解决此问题以及真正的代码将实现我的代码功能。 因为开发者控制台发送数据是-
productID:
21202,33201,44202,33204
Qty:
1,2,3,4,5
foreach($_POST['productID'] as $product) {
foreach($_POST['Qty'] as $qty) {
$stmt = $con->prepare("INSERT INTO `table` (product,qty) VALUES (:p,:q)");
$stmt->execute(array(
':p' => $product,':q' => $qty
));
}
}
echo $_POST['productID'];
response is = 21202,33204,332061
解决方法
您的输入数据似乎是逗号分隔的值字符串,而不是数组。要遍历它们,您需要使用explode
将它们转换为数组:
$stmt = $con->prepare("INSERT INTO `table` (product,qty) VALUES (:p,:q)");
foreach(explode(',',$_POST['productID']) as $product) {
foreach(explode(',$_POST['Qty']) as $qty) {
$stmt->execute(array(
':p' => $product,':q' => $qty
));
}
}
请注意,您只需要准备一次语句,因此我已将其移出循环。您还可以通过在循环外绑定参数来进一步优化此代码:
$stmt = $con->prepare("INSERT INTO `table` (product,:q)");
$stmt->bindParam(':p',$product);
$stmt->bindParam(':q',$qty);
foreach(explode(',$_POST['Qty']) as $qty) {
$stmt->execute();
}
}
请注意,上面的代码会将productID
和Qty
值的所有组合插入到表中(原始代码也是如此),但是您可能只想要匹配的值。在这种情况下,请使用以下代码:
$stmt = $con->prepare("INSERT INTO `table` (product,$qty);
$quantities = explode(',$_POST['Qty']);
foreach(explode(',$_POST['productID']) as $key => $product) {
$qty = $quantities[$key];
$stmt->execute();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。