2014-04-02 29 views
0

我有以下的循環來將幾個用戶添加到數據庫,但是它只適用於只有一個用戶被添加到表單中的情況。使用php在MySql中建立一個查詢

echo "The following names have been added to $cname<br><br>"; 
$query = ""; 
for ($i = 0; $i < count($fname); $i++) { 
    $query = $query . "INSERT INTO Students (firstName, lastName, year, class, school, email) " 
    ." VALUES ('{$fname[$i]}','{$lname[$i]}','{$year}','{$cname}','{$sch}','{$uname[$i]}'); "; 
    echo $fname[$i] . " " . $lname[$i] . " " . $uname[$i]; 
    } 

if ($mysqli->query($query)) { 
    $id = $mysqli->insert_id; 
    error_log("Inserted {$firstname} as ID {$id}"); 
    return true; 
} else { 
    error_log("Problem inserting {$query}"); 
    return false; 
} 

我是否需要爲每次迭代添加($mysqli->query($query)?或者只是在循環內移動'if'子句?或者,還有更好的方法。

謝謝。

+0

你的回聲結果是什麼?以及如何爲這個PHP文件創造價值? – user3454436

+0

回顯爲空,且沒有數據添加到數據庫。 'if'返回false並且頁面重定向形成。如果只有一個名字在表格中輸入,它的工作沒有問題。 – Russell

+0

你可以展示你的表單嗎? – user3454436

回答

1

當前您的查詢嘗試一次發送多個sql查詢並且失敗。你應該改變你建立查詢的方式:

$query = "INSERT INTO Students (firstName, lastName, year, class, school, email) VALUES "; 
for ($i = 0; $i < count($fname); $i++) { 
    $query .= $i>0 ? ',':''; 
    $query .="('{$fname[$i]}','{$lname[$i]}','{$year}','{$cname}','{$sch}','{$uname[$i]}') "; 
    echo $fname[$i] . " " . $lname[$i] . " " . $uname[$i]; 
} 
+0

最好在每個VALUES元組之後省略分號。 – Callidior

+0

這並不重要,因爲無論如何你都必須「如果」 - 否則它會在最後一次數據設置失敗後留下分號。 – MSadura

0

更好地把if子句放在循環中。你試過了嗎?