[英]php insert multiple values into separate rows in mysql table
我有一個PHP表單,其中包含各種類型的輸入字段(復選框,下拉列表,單選,自動完成等)。我想做的就是讓用戶輸入(例如,可能有多個值)問題:哪部電影是您最喜歡的電影?他可能寫了多部電影),並將這些值存儲在Mysql表的不同行中。 這是我數據庫中的表:
答案: ID,用戶ID,問題ID,答案
成員:userId,姓名,姓氏等。
問題:questionId,questionText
我可以做的是這樣的:(注意:在這種情況下,設計會有所不同,這里我對每個問題都有一個單獨的字段)
$stmt = $conn->prepare('UPDATE test SET q1 = :q1, q2 = :q2, q3 = :q3, q4 = :q4, q5 = :q5, q6 = :q6, q7 = :q7 WHERE username = :username');
$stmt->execute(array(':q1' => $q1,':q2' => $q2, ':q3' => $q3, ':q4' => $q4, ':q5' => $q5, ':q 6' => $q6, ':q7' => $q7, ':username' => $_SESSION['SESS_USERNAME']));
我的方法的問題是,將多個值答案插入到同一行中,並用逗號隔開(例如,如果用戶寫了“ Tom cruise”和“ Brad Pitt”,則將這兩個名稱都存儲在同一行中)
我以為我必須用這樣的東西代替它:
$stmt = $conn->prepare('INSERT INTO Answer (qId, answer) VALUES (:qId, :answer)');
但是在這里我不知道如何定義qId? (如何識別每個答案與哪個問題有關)
在下面的代碼中,我可以從數據庫中獲取問題並將其存儲在數組中,但是我仍然不確定如何完成此代碼。.我應該在循環內編寫插入語句(從數據庫獲取問題的循環,因此針對每個問題,它會插入qId,並且答案用戶已插入...對嗎?)
$arr = array();
$sql="select qId from question";
$result = mysql_query($sql) or die(mysql_error());
while( $row = mysql_fetch_assoc( $result ) ) {
arr[] = $row[ 'qId' ];
}
有人可以幫助我知道如何將這些值插入多行嗎?
非常感謝,
如果您已經通過qId將答案存儲在$ _POST中,並且您在輸入名稱中使用[],如Aret所建議的,則可以執行以下操作:
// creates an object, $stmt, which will do an insert whenever $stmt->execute()
// is called
$stmt = $conn->prepare('INSERT INTO Answer (qId, answer) VALUES (:qId, :answer)');
$sql="select qId from Answer";
$result = mysql_query($sql) or die(mysql_error());
// loop over all question ids
while( $row = mysql_fetch_assoc( $result ) ) {
$qId = $row['qId'];
// loop over all the answers for one question
foreach ($_POST[$qId] as $answer) {
// this runs the sql from the first line with :qId set to $qId,
// and :answer set to $answer
$stmt->execute(array(':qId' => $qId, ':answer' => $answer));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.