Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将数组插入MySQL_Php_Mysql_Forms - Fatal编程技术网

使用PHP将数组插入MySQL

使用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

我有一个PHP表单,有3个字段
名称
日期
学校
。与之相关联的有多达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);
}