2011-11-22 79 views
0

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

这是我通常构造我的代码以允许用户插入数据库。我的问题是如何以及在哪里插入循环,使多行可以一次全部提交,而无需逐一插入。任何事情都会有帮助,谢谢。

<?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循环,但我永远不会得到一个工作。再次感谢任何帮助。

+0

请务必检查是否存在SQL注入漏洞。 –

+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查询。

+0

太棒了!谢谢,这正是我想要做的。 – BRHETT

+0

如果这对您有所帮助,请立即投票并接受它作为答案。 –

0

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