1

我有多个名称看起来像 name_$i 的字段,我正试图找出一种“提交时”的方法,将它们全部发送到数据库。问题是表单是循环的,插入必须能够适应表单中的字段数。有没有办法做到这一点???

<?php

$fldcnt = $_POST['fldcnt'];
$i = $_POST['i'];

for ($i = 0; $i < $fldcnt; $i++){
$NAME = $_POST['name_$i'];
$AGE = $_POST['age_$i'];
$ADDRESS = $_POST['address_$i'];
$TELEPHONE = $_POST['telephone_$i'];
$EMAIL = $_POST['email_$i'];



$q_register_new_users = "insert into registration set
        NAME = '$NAME',
        AGE = '$AGE',
        ADDRESS = '$ADDRESS',
        TELEPHONE = '$TELEPHONE',
        EMAIL = '$EMAIL'";

    mysql_query($q_new_products,$connection) or die(mysql_error());


};
?>"
4

4 回答 4

2

HTML 和 PHP

您可以通过简单地调用 field 将输入字段输入到数组中name[]。像这样:

<input name="name[]" />

然后,您可以使用 PHP 循环遍历字段,如下所示:

foreach($_POST['name'] as $key=>$value){
    // Insert the value of the form field into a string or query
    // i.e. build the query
    $query .= $value;
}

// Then execute the query for each set of fields

上面的逻辑实际上是不正确的,但它应该让你明白我的意思。

MySQL

您的 SQL 语法不正确,插入 MySQL 数据库的正确语法是:

INSERT INTO `table` (`field_1`, `field_2`)
VALUES ('value_1', 'value_2')

请注意

mysql_由于即将弃用,因此非常不鼓励使用这些功能。相反,大多数 PHP 程序员现在都在使用 PDO / SQLite 类。虽然这些看起来很复杂,但它们实际上非常简单,并提供了一种更安全的 SQL 语句执行方式。

  1. PDO
  2. SQLite
于 2012-12-11T13:45:57.763 回答
0

语句的语法INSERT应该是这样的,

 INSERT INTO registration (NAME , AGE , ADDRESS, TELEPHONE, EMAIL)
 VALUES ('$NAME', '$AGE', '$ADDRESS','$TELEPHONE', '$EMAIL')

但是上面的查询很容易受到攻击SQL INJECTION,请阅读下面的文章以了解如何保护它,

于 2012-12-11T13:38:05.460 回答
0

如果要保持代码结构,则需要使用双引号而不是撇号

$NAME = $_POST["name_$i"];

或者把变量拿出来

$NAME = $_POST['name_'.$i];
于 2012-12-11T13:46:37.797 回答
0

使用数组是最好的方法。但是,如果您仍然想使用柜台,那么您可以使用

for($i = 0;isset($_POST["name_{$i}"]);$i++)
{
 // name found
}

请注意,如果 name_xx 字段来自复选框,则此代码可能不是最佳的,用户选择了项目并在其间跳过了一些。

PS。我发表了评论,但它更适合作为答案。

于 2012-12-15T19:36:16.160 回答