![](/img/trans.png)
[英]Need help inserting multiple records from an html form using 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
但這只會在循環生成的最后一個查詢上運行。
您有兩種方法可以解決此問題:
每次迭代都在循環內執行查詢。 偽代碼:
對於($ i = 1至100){
$ query = //建立查詢;
mysql_query($ query);
}
或者, (更好的方法)是在插入語句中使用值列表。
帶有值列表的插入看起來像這樣
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.