【问题标题】:insert key$ and $value to database form foreach将 key$ 和 $value 插入数据库表单 foreach
【发布时间】:2016-09-29 11:43:50
【问题描述】:

我正在尝试从 foreach 插入键和值的数据。但是我收到错误消息-注意:数组到字符串的转换在......(第 22 行) 但我已经使用 var_dump 检查了 $key 和 $value ,发现数组值是完美的。那么将这个 $key $value 数据一次插入我的数据库的解决方案是什么?另请注意,当我运行它时,$key 值已成功插入 db 中,但 $value 值字段正在闪烁并在浏览器中出现相同的错误。如果需要,您可以在附图中查看我的数据库表

foreach ($_POST['qty'] as $key => $value) {
 mysqli_query($conn, "INSERT INTO combine (rand_id,product_id,product_qty)VALUES('$rand_id','$key','$value')");
}

【问题讨论】:

  • 对不起?什么空间?
  • print_r($_POST['qty'])先检查这个,根据错误,$value是一个数组
  • 顺便说一句。考虑只用一个 INSERT INTO 插入它们。

标签: php mysql


【解决方案1】:

根据您的数组和错误消息$value 不是字符串,它是一个数组,您可以通过再使用一个foreach() 从$value 中获取值。

示例:

foreach ($_POST['qty'] as $key => $value) {
  foreach ($value as $finalVal) {
    $include[] = "('$rand_id','$key','$finalVal')";
  } 
}
$values = implode(",", $include);

$query = "INSERT INTO combine (rand_id,product_id,product_qty) VALUES $values";

另请注意,您可以在一个查询中插入值,如给定示例。将所有值存储在数组中,而不是 implode() 用逗号。

最后,你的代码对 SQL 注入开放,你需要阻止你的代码。你可以关注这个帖子:How can I prevent SQL injection in PHP? 是的,Prepared Statements & Parameterized Queries 是预防的最佳选择。

【讨论】:

  • @KevinHeimlich:很高兴帮助你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2011-03-19
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多