将自动递增的字段插入SQL数据库

时间:2013-06-11 19:49:06

标签: php sql sql-server

我有一些简单的PHP代码,它们将使用'car_init $ i'和'car_num $ i'的命名方案生成新的文本框。其中$ i = 1,我使用i ++来增加它。我遇到的问题是,虽然用户最多可以生成70个文本框,但它可以是介于1到70之间的任何数字。因此,如果用户只需要46个文本框,则可以在页面上显示46个文本框所以我会把car_num1,car_num2,car_init1,car_init2等作为我的表格名称。

Car_ID将是我自动递增的主键,我有2列car_num和car_init。有可能做这样的事情:INSERT INTO dbo(car_init,car_num)VALUES(car_init $ i,car_num $ i)然后使用$ i = 1和i ++增加它,同时将所有值添加到新行? Car_id = 1将在各自的列中包含car_num1和car_init1信息,Car_id = 2将包含car_num2和car_init2信息,依此类推。

编辑: 所以这就是我现在的代码:

$car_num = $_POST["car_num"];

foreach($_POST['car_init'] as $key => $car_init)
{
// your insert query
$sql = "INSERT INTO CustBill_cars (C_ID, car_init, car_num) VALUES ('1', '".$car_init."',          '".$car_num[$key]."')";
}

每次添加到我的数据库时,只会输入我输入的最后一个内容。因此,如果我需要3辆汽车,那就是6个文本框,但只有页面上的最后一个文本框才能输入。

编辑2:这就是我的文本框的生成方式。所有文本框都按照您所说的方式使用'car_init []'和'car_num []'。

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

$i = 1; 

while ($i <= $_POST['carAmount'] AND $i <= 70) { 
     // Now print the text box to the screen 
     echo "<b>$i</b>. Car Initial: <input type=\"text\" class='element text small' name=\"car_init[]\" maxlength='4' id='car_init[]' /> ";
     echo "Number: <input type=\"text\" class='element text small' name=\"car_num[]\" maxlength='6' id='car_num[]' /><br>";

     $i++;
} 
} 

2 个答案:

答案 0 :(得分:1)

将您的html更改为以下内容:

<input name="car_init[]" />
<input name="car_init[]" />
<input name="car_init[]" />
<input name="car_init[]" />
<input name="car_init[]" />

然后在php中,你的变量将是一个数组!

$_POST['car_init'] // is an array!

循环遍历这些并执行多个INSERT

foreach ($_POST['car_init'] as $car_num => $car_init) {
    // "INSERT INTO dbo (car_init, car_num) VALUES ('$car_init', $car_num)"
}
根据您的更新

修改

INSERT INTO CustBill_cars (C_ID, car_init, car_num) VALUES ('1', '".$car_init."',          '".$car_num[$key]."')"
  • 将PDO与预准备语句一起使用,而不是使用字符串插值。您似乎容易受到SQL注入攻击。

答案 1 :(得分:1)

啊,我想我明白了。

这是一个问题:

foreach($_POST['car_init'] as $key => $car_init)
{
    // your insert query
    $sql = "INSERT INTO CustBill_cars (C_ID, car_init, car_num) VALUES ('1', '".$car_init."',          '".$car_num[$key]."')";
}

我假设您正在运行查询$sql?如果是这样,那只运行最后一个值$sql!你需要:

foreach($_POST['car_init'] as $key => $car_init)
{
    // your insert query
    $sql = "INSERT INTO CustBill_cars (C_ID, car_init, car_num) VALUES ('1', '".$car_init."',          '".$car_num[$key]."')";
    // actually run the query!
}