PHP:迭代多个数组并构建 SQL INSERT 查询

标签 php mysql

我有获取多个数组的 PHP 代码:

<?php
$checkKey = $_POST['key'];

if ($key === $checkKey)
{

  $a = array_values($_POST['a']);
  $b = array_values($_POST['b']);
  $c = array_values($_POST['c']);
  $d = array_values($_POST['d']);

  if ( (count($a) !== count($b)) || (count($a) !== count($c)) || (count($a) !== count($d)) )
  {
    die ('Not enough parameters!');
  }
  else
  {

  }


}
?>

我想迭代所有数组并构建一个 SQL INSERT 查询,如下所示:

INSERT INTO xyz (a,b,c,d) VALUES (1,2,3,4), (4, 5, 6, 7);

值存储在每个数组中的位置(即,在此示例中,a 包含值 1 和 4,b 包含值 2 和 5,等等)

我怎样才能实现这一目标?

最佳答案

只需使用 for() 循环来迭代从 0count($a) 的索引(您可以使用任何数组,它们检查大小相同)。

$sql = 'insert into xyz (a, b, c, d) values ';
for ($i = 0, $l = count($a); $i < $l; ++$i) {
     $sql .= "('".
         // it's really important to escape the input!
         mysqli_real_escape_string($link, $a[$i]).','.
         mysqli_real_escape_string($link, $b[$i]).','.
         mysqli_real_escape_string($link, $c[$i]).','.
         mysqli_real_escape_string($link, $d[$i]).
     "'), ";
}
$sql = substr($sql, 0, -2); // trim down the last ', '

关于PHP:迭代多个数组并构建 SQL INSERT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610571/

相关文章:

php - 去掉mysql中的撇号?

php - 什么时候应该使用存储过程或函数?

php - 是否有与 PDO::FETCH_CLASS 等效的 INSERT 或 UPDATE?

php - 将动态表单发布到数据库

mysql - 相同的查询返回不同的结果(MySQL Group By)

mysql - 如何透视 MySQL 或 SSIS 中不唯一的列?

mysql - 对mysql中的评估顺序感到困惑

php - Bootstrap 响应在 html 邮件正文中不起作用

mysql - 构造 SQL 查询以查找所有具有相同值的记录

MySQL - 如何删除多对多关系中的相关行