2016-02-03 72 views
0

「測驗」當前包含測驗ID,名稱,描述和主題(來自主題表)。PDO MySQL更新在編輯頁面上無法正常工作

我想設置一個簡單的「編輯測驗」頁面。

問題是 - 如果測驗稱爲「Quiz1」,並且我將編輯頁面上的測驗名稱更改爲「Quiz2」,一旦點擊保存按鈕,它將恢復爲「測驗1」而不存儲。

我已經設置了回聲,如代碼中所示,以檢查它們實際上是否存儲,單擊保存按鈕後將顯示'Quiz1',但該值不存儲在我的數據庫中。 SQL已經在PhpMyAdmin上測試過,似乎也可以工作。

PHP代碼:

<? if (!empty($_POST)) { 

    $id = $_POST['qzid']; 
    $qzname = $_POST['qzname']; 
    $qzdesc = $_POST['qzdesc']; 
    $ctname = $_POST['ctname']; 

    $checkQuiz = $db->prepare("SELECT qz_name FROM quizzes WHERE qz_name = :qz_name"); 
    $checkQuiz->execute(array(':qz_name' => $qzname)); 


    $qzChanged = "Quiz details updated successfully"; 
    $sql = "UPDATE quizzes SET `qz_name` = :qzname, `qz_desc` = :qzdesc WHERE `quizzes`.`id` = :qzid"; 
    $q = $db->prepare($sql); 
    $q->execute(array(':qzname' => $qzname, ':qzdesc' => $qzdesc, ':qzid' => $id)); 

    echo $qzname, $qzdesc; //THIS RETURNS THE CHANGED VALUES 

    }?> 

HTML代碼:

<form action="edit_quiz.php?id=<?php echo $row['id'] ?>" method="POST"> 
<input type="hidden" name="qzid" id="qzid" value=""/> 
<!-- selection box --> 
<p>Topic Name: 
    <select class="form-control" name="ctname" id="ctname"> 
     <?php 
     while ($tresult = $stmt->fetch()) { 
      echo "<option>" . $tresult["ct_name"] . "</option>"; 

     } 
     ?> 
    </select> 
</p> 
<p>Quiz Name: <input type="text" name="qzname" value="<?php echo $row['qz_name']; ?>"/></p> 
<p>Quiz Description: <textarea name="qzdesc" value=""/><?php echo $row['qz_desc']; ?> </textarea></p> 

<input type="submit" class="btn btn-success" value="Save"/> <a class="btn" href="quizzes.php">Back</a> 

請注意,該代碼已經被簡化。 任何幫助,我將非常感謝非常感謝!

+0

你的update語句中是否需要「localhost」?那實際上是你的數據庫的名字?既然你沒有在select語句中指定數據庫名稱,我會嘗試刪除第一個 – Trey

+0

對不起,這沒有什麼區別,只是我的不一致! (更新我的代碼,以避免混淆) – StackMeUp123

+0

qzid隱藏輸入如何,它似乎沒有一個值,所以它不知道哪一行更新 – Trey

回答

1

您不會發布它看起來像的ID。

數據庫名爲localhost,否則刪除該部分。

+0

謝謝! 語句需要發佈一個值(id)。不知道我錯過了這個。 – StackMeUp123