如何使用PHP将数组插入mysql?
我有一个复杂的表单,有11列。至于行数,则视乎学生人数而定,由20至50不等。我通过如何使用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将为
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);
}