如何使用PHP将数组插入mysql?

如何使用PHP将数组插入mysql?,php,mysql,insert,multidimensional-array,Php,Mysql,Insert,Multidimensional Array,我有一个复杂的表单,有11列。至于行数,则视乎学生人数而定,由20至50不等。我通过php脚本将数据捕获为数组。每列生成一个数组。例如,在表单中,我有fname[],lname[],exam_no[]等,所以当表单提交时,比如说10行,我最终得到11个数组,每个数组有10个条目,我通过一些php函数来删除空元素。生成的阵列没有任何问题 我想使用循环将这些数组中的数据插入mysql。基本上,lname array将为first name列提供所有first\u name,lname array将为

我有一个复杂的表单,有11列。至于行数,则视乎学生人数而定,由20至50不等。我通过
php脚本
将数据捕获为数组。每列生成一个数组。例如,在表单中,我有
fname[],lname[],exam_no[]
等,所以当表单提交时,比如说10行,我最终得到11个数组,每个数组有10个条目,我通过一些
php函数来删除空元素。生成的阵列没有任何问题

我想使用循环将这些数组中的数据插入
mysql
。基本上,
lname array
将为first name列提供所有first\u name,
lname array
将为数据库的last\u name列提供数据,依此类推

我甚至无法开始构建
MySQL查询
来插入数据,我非常熟悉“普通”插入,其中有列和值,并且您已经知道将插入多少行,大多数情况下每插入一行

甚至可以使用
PHP循环
使用insert填充
MySQL数据库表
,并使用如此多的列,灵活地插入任意数量的行,因为每次用户输入学生数据都会有所不同

更新

这就是我想到的。它的工作,但不是理想的

数组的出现类似于
$fname[],lname[]
等 然后我将主数组构建为
$master\u array=array['$fname,$lname]

$sql = "INSERT INTO testing (date, fname, lname) VALUES ";
foreach($master_array as $subarray) {
   $sql .= "(NOW( )";
   echo 'A nested array: '.$subarray.'<br />';
   foreach($subarray as $value) {
      $sql .= ", '$value'";
      echo 'A Name: '.$value.'<br />';
   }
   $sql.= "), ";
}
$sql = substr($sql,0,-2); //removes extraneous , at end.
echo $sql;
$result=mysqli_query($dbc, $sql)
or die('Query Failed!');
?>

正如我所怀疑的,它在第一行插入所有的名字,在第二行插入所有的姓氏。所需的结果是在“第一个名称”列中插入第一个名称,在“第二个名称”列中插入第二个名称。现在我需要一种方法将一个数组的所有元素插入到一个列中,然后移动到第二个数组并将其插入到下一列中。这听起来很复杂,我想知道这是否可行!让我接受php语言大师的教育,因为我是一名中级或可能是全新的新手

按学生分组不是更好吗

例如:

之后,检查更新数组:

foreach ($update as $id => $info) {
  $sql = "UPDATE students
          SET fname = '".$info['fname']."', lname = '".$info['lname']."'
          WHERE id = $id";
  mysql_query($sql);
}

按学生分组不是更好吗

例如:

之后,检查更新数组:

foreach ($update as $id => $info) {
  $sql = "UPDATE students
          SET fname = '".$info['fname']."', lname = '".$info['lname']."'
          WHERE id = $id";
  mysql_query($sql);
}
可能重复的,,,可能重复的,
$update = array();

foreach ($_POST as $key => $value) {
  // key will look like: fname;1, fname;2, etc
  // so, split it on the ; sign to separate the field name from the student's id
  $data = explode(';',$key);

  // result:
  // $data[0] = fname, lname, etc
  // $data[1] = 1, 2, etc
  // you can add some checks to make sure that this field is valid
  // and that the id is in fact a valid id (number, > 0, etc)

  // sanitize data (however you want, just an example)
  $value = mysql_real_escape_string(trim($value));

  // now add it to the update array, grouped by student id
  $update[$data[1]][$data[0]] = $value;

  // result:
  // $update[1]['fname'] = 'First name student 1';
  // $update[1]['lname'] = 'Last name student 1';
  // $update[2]['fname'] = 'First name student 2';
  // $update[2]['lname'] = 'Last name student 2';
  // etc
}
foreach ($update as $id => $info) {
  $sql = "UPDATE students
          SET fname = '".$info['fname']."', lname = '".$info['lname']."'
          WHERE id = $id";
  mysql_query($sql);
}