簡體   English   中英

將自動遞增的字段插入SQL數據庫

[英]Inserting auto incremented fields into a SQL database

我有一些簡單的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插入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++;
} 
} 

將您的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注入攻擊。

啊,我想我明白了。

這是個問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM