簡體   English   中英

多條記錄從PHP表單插入MySql

[英]Multiple records inserting into MySql from PHP form

我認為我的代碼有一個小錯誤,因此當我嘗試向MySQL數據庫中添加兩個記錄時,會將它們都添加了,但目前僅添加了應輸入的第二行。 例如,我有兩個RefTitle字段,兩個RefSurname字段等等! 一些PHP代碼:

<?php
if(empty($err)) {
for($i = 0; $i < 2; $i++)
{
$RefTitle = $_POST['RefTitle'][$i];
$RefSurname = $_POST['RefSurname'][$i];
$RefForenames = $_POST['RefForenames'][$i];
$RefInstitute = $_POST['RefInstitute'][$i];
$RefEmail = $_POST['RefEmail'][$i];
$RefTelephone = $_POST['RefTelephone'][$i];
$EmailOK = $_POST['EmailOK'][$i];

$sql_insert = "INSERT into `referees`
(`RefTitle`,`RefSurname`,`RefForenames`,`RefInstitute`, `RefEmail`,    
`RefTelephone`,`EmailOK`)
VALUES

('$RefTitle','$RefSurname','$RefForenames','$RefInstitute','$RefEmail',    
'$RefTelephone','$EmailOK'
)
"; ?>

我的html表單中的每個名稱字段后都有[]。 謝謝

我認為這是正在發生的事情。

在循環中,您要將當前查詢添加到字符串中,從而覆蓋前一個查詢。 循環結束后,您將運行mysql_query但這只會在循環生成的最后一個查詢上運行。

您有兩種方法可以解決此問題:

  1. 每次迭代都在循環內執行查詢。 偽代碼:

    對於($ i = 1至100){
    $ query = //建立查詢;

    mysql_query($ query);

    }

  2. 或者, (更好的方法)是在插入語句中使用值列表。

帶有值列表的插入看起來像這樣

INSERT INTO table VALUES (1,2,3), (4,5,6), (7,8,9)

所以,(再次是偽代碼)

$query = "INSERT INTO table VALUES ";
for ($i = 1 to 100)
{
  $query .= " ("; 
  $query .= "" //comma seperate the values of the current iteration
  $query .= "),";
}

//循環結束后,刪除結尾的多余逗號

//一次執行整個查詢

mysql_query($query);

暫無
暫無

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

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