Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将自动递增字段插入SQL数据库_Php_Sql_Sql Server - Fatal编程技术网

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

Php 将自动递增字段插入SQL数据库,php,sql,sql-server,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是我的自动递增主键,我有两列Car_num和Car_init。是否可以这样做:

我有一些简单的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是我的自动递增主键,我有两列Car_num和Car_init。是否可以这样做:在dbo(car_init,car_num)中插入值(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++;
} 
} 
if($\u服务器['REQUEST\u方法']='POST'){
$i=1;

而($i将html更改为以下内容:

<input name="car_init[]" />
<input name="car_init[]" />
<input name="car_init[]" />
<input name="car_init[]" />
<input name="car_init[]" />
循环浏览这些内容并执行多个
INSERT
s

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注入攻击
    • 啊,我想我明白了

      这是一个问题:

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

      答案对您没有帮助,或者您需要更多的澄清吗?我编辑了当前的问题。您的html是什么样子的?
      C\u ID
      是主键字段吗?首先,不要将数字括在引号中(
      '1'
      在插入查询中).其次,主键是唯一的。你每次都会覆盖键#1.C#ID不是主键字段,它只是一个需要显示1的字段。我的主键字段只是汽车ID。是的!明白了!你太棒了。谢谢。
      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!
      }