如何从多个 $_POST 数组中插入 MYSQL 行

Posted

技术标签:

【中文标题】如何从多个 $_POST 数组中插入 MYSQL 行【英文标题】:How to insert into MYSQL row from multiple $_POST arrays 【发布时间】:2013-09-10 23:49:29 【问题描述】:

我有一个带有“添加联系人”部分的表单,单击该部分后,它会在表单中添加另一行,其中包含另外 3 个输入框。 (jfiddle上的这段代码:http://jsfiddle.net/fmdx/cYxYP/)

html

<form method="post" action="">
<div style="padding-left:40px;">
<div id="customcopies" style="padding-left:40px;">
1. Name: <input type="text" id="copiestoname_1" name="copiestoname[]" placeholder="Jane Doe Smith" required>, Institution: <input type="text" id="copiestoinst_1" name="copiestoinst[]" placeholder="Bank" required>, Method: <input type="text" id="copiestomethod_1" name="copiestomethod[]" placeholder="Email" required>
</div>
</div>
<input type="submit" name="submit_val" value="Submit" />
</form>

这是用于插入的 php/mysql

if (isset($_POST['submit_val'])) 
    foreach ($_POST['copiestoname'] as $key=>$value) 
    $copiestoname = mysql_real_escape_string($value);

        mysql_query("INSERT INTO copiesto (name) VALUES ('$copiestoname')") or die(mysql_error());
        echo "Completed";
    
echo "" . count($_POST['copiestoname']) . " Names Added<br>";
mysql_close();

数据库中的表是:

Table Name: copiesto
+-------------+-------------+-------------+---------+
| index       |  name       | institution | method  |
+-------------+-------------+-------------+---------+

如何扩展当前的 MYSQL 代码以接受来自其他 2 个数组的条目并在该循环期间将它们的数据输入到同一 MYSQL 行中?

【问题讨论】:

你有使用mysql_query的理由吗?这是 1990 年代的遗留应用程序吗? 这是我从示例和教程中拼凑出来的代码,如果有点过时请见谅! 这个脚本有什么问题? 我想让 MYSQL 代码接受来自其他 2 个输入框数组的值,将每个数组中的 1 个值插入 mysql 数据库的行中。上面的代码只做第一个数组,但我没能成功扩展它以包含其他 2 个。 @fmdx 从教程中学习是学习 PHP 和 Web 开发的一种极其危险的方式,因为它会教给你各种危险的坏习惯。更好的解决方案是使用popular framework,这样您就可以从好的示例中学习,另外还可以使用社区开发的附加组件,这些附加组件无需定制即可嵌入您的应用程序。 【参考方案1】:

你可以用for循环代替

for ($i=0; $i < count($_POST['copiestoname']); $i++ ) 
  $copiestoname = mysql_real_escape_string($_POST['copiestoname'][$i]);
  $copiestoinst = mysql_real_escape_string($_POST['copiestoinst'][$i]);
  $copiestomethod = mysql_real_escape_string($_POST['copiestomethod'][$i]);

  mysql_query("INSERT INTO copiesto (name, institution, method) VALUES ('$copiestoname', '$copiestoinst', '$copiestomethod')") or die(mysql_error());
  echo "Completed";

【讨论】:

我收到此错误:“列计数与第 1 行的值计数不匹配”

以上是关于如何从多个 $_POST 数组中插入 MYSQL 行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 wamp 服务器的 phpmyadmin 中将此数据数组插入 mysql

将php数组插入mySql

在MySQL多次插入中将数组值加入字符串

从数组的一个查询中插入多行[重复]

如何使用node.js在mySQL中插入数组[重复]

如何在php中从数据库中的数组中添加多行