【发布时间】:2011-08-11 14:24:00
【问题描述】:
我有一个包含 11 列的复杂表单。至于行,根据学生的数量,它们会从大约 20 到 50 不等。我通过php script 将数据捕获为数组。每列产生一个数组。例如,从表单中我有fname[], lname[], exam_no[] 等,所以当表单提交时说,10 行,我最终得到 11 个数组,每个数组有 10 个条目,我通过一些 php function 来删除空元素。正在生成数组,没有任何问题。
我想使用循环将这些数组中的数据插入mysql。基本上,lname array 将所有 first_name 用于名字列,lname array 将提供数据库的 last_name 列,依此类推。
我什至无法开始构建MySQL query 来插入数据,我非常熟悉“普通”插入,其中您有列和值,并且您已经知道要插入多少行,每行主要是一行插入。
是否甚至可以使用PHP loop 和如此多的列填充MySQL Database Table 并使其灵活地插入任意数量的行,因为每次用户输入学生数据时都会有所不同?
更新
这就是我想出的。它有效,但不如预期!
数组即将到来,例如 $fname[], lname[] 等
然后我将主数组构建为$master_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!');
?>
由于我的查询涉及连接小段代码,因此我在构建后打印它以查看要插入的内容。看起来是这样的;
INSERT INTO table (date, fname, lname) VALUES (NOW( ), 'Andrew', 'Alex'), (NOW( ), 'Peterson', 'Marlon')
正如我所怀疑的,它在第一行插入所有名字,在第二行插入所有姓氏。期望的结果是在名字列中插入名字,在第二个名字列中插入第二个名字。所以现在我需要一种方法将一个数组的所有元素插入一列,然后移动到第二个数组并将其插入下一列。这听起来很复杂,我想知道它是否可行!让我接受php语言大师的教育,因为我是中级或者可能是全新的新手!
【问题讨论】:
标签: php mysql insert multidimensional-array