簡體   English   中英

PHP將多個值插入MySQL表中的單獨行

[英]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' ]; 
} 

有人可以幫助我知道如何將這些值插入多行嗎?

非常感謝,

問題的ID可以是后端的數組。 您可以遍歷數組並循環插入問題。

另一種方法是使用變量變量在for循環中組成變量名稱。

在我看來,數組似乎是一個更干凈的代碼。 :)

如果您已經通過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.

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