如何在php中插入多个记录

时间:2014-06-21 13:17:13

标签: php database

将多条记录插入db

时出现问题

HTML

<input type="input" name="row[][name]"> 
<input type="input" name="row[][surname]">
<input type="input" name="row[][name]"> 
<input type="input" name="row[][surname]">

PHP

$returnedData = $_POST['row'];
$sql = array(); 
foreach( $returnedData as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['name']).'", '.mysql_real_escape_string($row['surname']).')';
}
mysql_query('INSERT INTO tableName (name, surname) VALUES '.implode(',', $sql));

但错误是它打开4行,而我的意思是它为每个输入打开一个新行。

如何插入两条记录?

新信息

当我通过使用foreach来编写已发布的值时,我可以正确地看到值,事情是我无法找到插入到我的表中的解决方案

foreach($returnedData as $data) { echo '<pre>'; echo $data['name']; echo $data['surName']; }

2 个答案:

答案 0 :(得分:0)

为帖子的每个实例插入一行,它应该是:

foreach( $returnedData as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['name']).'", '.mysql_real_escape_string($row['surname']).')';
mysql_query('INSERT INTO tableName (name, surname) VALUES '.implode(',', $sql));
}

因为你的方式只插入最后一个。

我认为这是你想要实现的目标

答案 1 :(得分:0)

对于您在问题中概述的HTML表单,$_POST['row']包含以下结构中的表单数据:

Array
(
    [0] => Array
        (
            [name] => Lara
        )

    [1] => Array
        (
            [surname] => Larasen
        )

    [2] => Array
        (
            [name] => Linda
        )

    [3] => Array
        (
            [surname] => Lindasen
        )

)

正如您在foreach次迭代中所显示的那样,您选择了每个条目,您显示已禁用错误。因此,您不会收到这样的消息:您正在查找的数据通常缺少您的迭代4次而不是2次。

您很可能想要创建以下HTML表单:

<input type="input" name="row[0][name]"> 
<input type="input" name="row[0][surname]">

<input type="input" name="row[1][name]"> 
<input type="input" name="row[1][surname]">

这为您提供了以下$_POST['row']表单数据,但不同的结构应该更容易迭代:

Array
(
    [0] => Array
        (
            [name] => Lara
            [surname] => Larasen
        )

    [1] => Array
        (
            [name] => Linda
            [surname] => Lindasen
        )

)

底线是:PHP需要一些外部数组索引的帮助,以便正确分组名称和姓氏。

您可以使用此演示试用这两种形式:http://codepad.viper-7.com/kxUsru


如果codepad viper丢失了代码,这里是示例的来源:

<form method="post">
<input type="input" name="row[][name]"> 
<input type="input" name="row[][surname]">

<input type="input" name="row[][name]"> 
<input type="input" name="row[][surname]">

<input type="submit">
</form>


<form method="post">
<input type="input" name="row[0][name]"> 
<input type="input" name="row[0][surname]">

<input type="input" name="row[1][name]"> 
<input type="input" name="row[1][surname]">

<input type="submit">
</form>

<pre>
<?php
    echo htmlspecialchars(print_r($_POST['row'], TRUE));
?>
</pre>