使用PHP将数组插入MySQL
我有一个PHP表单,有3个字段使用PHP将数组插入MySQL,php,mysql,forms,Php,Mysql,Forms,我有一个PHP表单,有3个字段名称,日期,学校。与之相关联的有多达40所college,coursetitle,coursenumbers 我希望插入SQL为: INSERT INTO _some_table_ (name, date, school, college, coursetitle, coursenumber) VALUES (foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000), (foo, 2011-12-23
名称
,日期
,学校
。与之相关联的有多达40所college
,coursetitle
,coursenumber
s
我希望插入SQL为:
INSERT INTO _some_table_
(name, date, school, college, coursetitle, coursenumber)
VALUES
(foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000),
(foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000),
(foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000),
(foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000),
(foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000),
(foo, 2011-12-23, UCLA, BizSchool, Accounting, XXX0000);
我不想包括
CourseTile
为空的任何行。我的阵法很难对付 如果要将其作为一个数组来执行,则必须将其与会话混合,这样会话将包含数组值。因此,插入查询将位于循环中
你能复制你的代码吗?或者你想让我编写这个例子?谢谢如果您正在使用MySQLI,它可能是这样的:
<?php
$mysqli = new Mysqli('localhost','root','pass','db');
$stmt = $mysqli->prepare('INSERT INTO _some_table(name, date, school, college, coursetitle, coursenumber) VALUES(?, ?, ?, ?, ?, ?)');
/**
* ITERATE VALUES, EACH KEY IN ARRAY CORRESPONDS TO A NEW ROW, THAT HAS TO BE INSERTED.
*/
foreach($values as $arr) {
if (!empty($arr['coursetitle'])) {
extract($arr);
/*
* BIND THE VALUES TO BE INSERTED TO THE STATEMENT
*/
$stmt->bind_param('ssssss', $name, $date, $school, $college, $coursetitle, $coursenumber);
$stmt->execute(); // Execute statement
}
}
$stmt->close();
$mysqli->close();
?>
当然,这是假设您使用的关联数组的键等于列名
您可以阅读有关准备语句的更多信息您只是在获取POST数组时遇到问题吗?编写html时,可以执行以下操作:
<table>
<tr>
<td>Course: </td><td><input type="text" name="coursetitle[]" value="" /></td>
</tr>
<tr>
<td>Course Number: </td><td><input type="text" name="coursenum[]" value="" /></td>
</tr>
<tr>
<td colspan="3"><h3>Add Another:</h3></td>
</tr>
<tr>
<td>College: </td><td><input type="text" name="college[]" value="" /></td>
</tr>
<tr>
<td>Course: </td><td><input type="text" name="coursetitle[]" value="" /></td>
</tr>
<tr>
<td>Course Number: </td><td><input type="text" name="coursenum[]" value="" /></td>
</tr>
<tr>
<td>College: </td><td><input type="text" name="college[]" value="" /></td>
</tr>
</table>
或者类似的:)大学信息来自哪里?是否要每提交一个表单添加40行?听起来像是错误的抽象。需要考虑规范化您的表。有一个名称、学院、课程的表格,然后有一个将它们链接在一起的表格。如果您想继续使用现有的数据,能否显示正在使用的数据数组?数组在哪里?你能展示你的PHP代码吗?要使用数组,你必须使用会话?抱歉什么?如何将您的值作为动态值添加到数组中?我给出了解决方案,并将其混合在数组和会话之间,这样当用户已经想要将值提交到数据库的表中时。所以用户可以提交数据库。像交易这样简单的例子:)我希望你明白我的意思谢谢!使用foreach/if(空)获取它。
$i = 0;
$complete = 0;
$query = "INSERT INTO TABLE (name, date, school, college, coursetitle, coursenumber) VALUES ";
foreach($_POST['coursetitle'] AS $course) {
$title = trim($course);
if (!empty($title)) {
$college = trim($_POST['college'][$i]);
$num = trim($_POST['coursenum'][$i]);
$query .= "('foo', '" . date("Y-m-d") . "', 'UCLA' '{$college}', '{$title}', '{$num}'),";
$complete++;
}
$i++;
}
$query = substring($query, 0, strlen($query) - 1); // Removes last comma from query
if ($complete == 0) {
echo "No colleges were posted, or none of the course titles were completed.";
exit;
} else {
$query .= ";";
mysql_query($query);
}