2013-06-11 107 views
1

我有一些簡單的PHP代碼,它將生成具有'car_init $ i'和'car_num $ i'命名方案的新文本框。其中$ i = 1,我用i ++來增加它。我遇到的問題是,雖然用戶最多可以生成70個文本框,但它可以是1到70之間的任意數字。因此,如果用戶只需要46個文本框,那麼在頁面上可以有46個文本框作爲示例。所以我會將car_num1,car_num2,car_init1,car_init2等作爲我的表單名稱。將自動增加的字段插入到SQL數據庫

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++; 
} 
} 
+0

答案沒有幫助您,還是您需要更多說明? –

+0

我編輯了我目前遇到的問題。 – fdsa

+0

你的html是什麼樣的? –

回答

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

是的!得到它了!你真棒。謝謝。 – fdsa

1

你的HTML更改爲這樣的事情:然後在PHP

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

,您的變量將是一個數組!

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

循環通過那些並做多個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注入攻擊。
相關問題