微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据未使用PDO PHP中的数组foreach函数插入DB中

如何解决数据未使用PDO PHP中的数组foreach函数插入DB中

当我用不同的输入和相同的名称PHP将数据发送到服务器时,无法通过foreach函数插入数据库。 我尽力了,stackoverflow上所有其他可用的功能,但它们对我没有帮助。

请帮助我如何解决此问题以及真正的代码将实现我的代码功能。 因为开发者控制台发送数据是-

productID: 21202,33201,44202,33204

Qty: 1,2,3,4,5

PHP

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();
   }
}

请注意,上面的代码会将productIDQty值的所有组合插入到表中(原始代码也是如此),但是您可能只想要匹配的值。在这种情况下,请使用以下代码:

$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 举报,一经查实,本站将立刻删除。