使用PHP和&amp ;;插入多行MySQL的

时间:2011-11-22 23:14:18

标签: php sql insert

我正在建立一个人们可以下订单的网站,这是我第一次不得不一次插入多行而且我迷路了。我知道我需要一个FOR循环来执行此操作,但我对如何构造循环感到很遗憾。我正在使用PHP,MySQL(很明显)和jQuery。我正在使用jQuery将.append()一个新的选择框放入表单中,以允许客户选择另一个项目。

这就是我通常构造代码以允许用户插入数据库的方法。我的问题是如何以及在何处插入一个循环,这样就可以一次性提交多个行,而无需逐个插入。什么都有帮助,谢谢。

<?php

if (isset($_POST['submit'])) {

    if (!$_POST['col1'] | !$_POST['col2'] | !$_POST['col3']) { die ("error"); }

    if (!get_magic_quotes_gpc()) {
        $_POST['col1'] = addslashes ($_POST['col1']);
        $_POST['col2'] = addslashes ($_POST['col2']);
        $_POST['col3'] = addslashes ($_POST['col3']);
    }

    $insert = "insert into table (col1, col2, col3) values ('".$_POST['col1']."', '".$_POST['col2']."', '".$_POST['col3']."')";
    mysql_query ($insert);

} else {
    ?>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<table>
  <tr>
    <td><input type="text" name="col1"></td>
    <td><input type="text" name="col2"></td>
    <td><input type="text" name="col3"></td>

 //I'm using jQuery .append() to insert more text boxes with names (col1, col2, col3) here 

  </tr>
</table>
<input type="submit" name="submit" value="Submit">
</form>

    <?php
}
?>

我的困惑在于放置循环......我知道它应该是一个FOR循环,但我永远无法让它工作。再次感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

确保您唯一地命名您的输入。但是你可以像这样命名每一列(例如见here):

<input type="text" name="column1[]" />
<input type="text" name="column2[]" />
<input type="text" name="column3[]" />

通过这种方式,您可以使用for循环通过PHP访问列。

for($i = 0; $i < $n; $i++) // If you have $n rows
{
    echo($_POST["column1"][$i]);
    echo($_POST["column2"][$i]);
    echo($_POST["column3"][$i]);
}

要在mySQL数据库中插入多行,请使用以下语法(另请参阅:here)。

INSERT INTO
    tbl_name (column1, column2, column3)
VALUES
    (1,2,3),
    (4,5,6),
    (7,8,9);

现在您应该设置构建SQL查询。

答案 1 :(得分:0)

您要避免的第一件事是使用相同的名称。您可能希望将它们命名为rowNcolM,然后在检查发布变量的位置提取它们。