【问题标题】:how to insert multiple records in php如何在php中插入多条记录
【发布时间】:2014-06-21 21:32:46
【问题描述】:

我在向数据库中插入多条记录时遇到问题

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']; }

【问题讨论】:

  • 首先查看$returnedData,然后决定如何迭代它。如果你对$sql 做同样的事情而不是直接运行查询,你可以更快地找到。
  • 问题不在于你是否可以foreach和array,而是如何你foreach它。所以问题不是在这里插入,而是在插入之前。
  • 我给您留下了答案,让您可以更好地了解变量,并为您提供了一个在线示例,可以更好地展示它的工作原理。
  • 只是我的意见,我很想使用“name[]”和“surname[]”的名称,而不是您正在创建的多维数组。要查看它们,只需执行以下操作:var_dump($_POST)。如果您确实想将它们放在一个条目中,那么我认为 'row[name][]' 会更容易使用。

标签: php database


【解决方案1】:

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

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));
}

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

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

【讨论】:

    【解决方案2】:

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

    Array
    (
        [0] => Array
            (
                [name] => Lara
            )
    
        [1] => Array
            (
                [surname] => Larasen
            )
    
        [2] => Array
            (
                [name] => Linda
            )
    
        [3] => Array
            (
                [surname] => Lindasen
            )
    
    )
    

    正如您在foreach 迭代中显示的那样,您选择每个条目并且您有错误显示被禁用。因此,您不会收到这样的消息:您要查找的数据经常丢失并且您的迭代次数是 4 次而不是两次。

    您很可能想要创建以下 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


    万一键盘毒蛇丢失代码,这里是示例的来源:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-04
      • 2015-05-10
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多