2011-04-09 34 views
-2

**修訂拉數據轉換成下拉

<?php 
    // Get select box of courses to comment on 
    $pID3 = filter_input(INPUT_GET, 'pID', FILTER_SANITIZE_NUMBER_INT); 
      $username = "###"; 
      $password = "###"; 
      $pdo3 = new PDO('mysql:host=localhost;dbname=###', $username, $password); 
      $pdo3->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sth3 = $pdo3->prepare(' 
     SELECT C.prefix, C.code 
     FROM Department D, Course C 
     WHERE D.dID = C.dID 
     **AND pID = ?** 

    '); 
      $sth3->execute(array(
       $pID3 
      )); 
    ?> 

      <html> 
        <?php 
        echo "<form action='inc/q/prof.php' method='post'> 
         <select id='courseInfoDD' name='courseID' tabindex='1'>"; 
        ?> 
          <?php 
          while($row3 = $sth3->fetch(PDO::FETCH_ASSOC)) { 
           echo "<option>".$row3['prefix'].", ".$row3['code']."</option>"; 
          } 
          ?> 
          <?php 
         echo "</select>"; 
         ?> 
      </html> 

好了,所以現在它拉到所有課程無論PID或教授(ID)的。我在選擇中添加了一條語句,其中pID =? ,因爲pID位於頁面的url中。但現在它拋出和錯誤關於pID?

查詢:

SELECT C.prefix, C.code 
FROM Department D, Course C, Professor P 
WHERE pID = ? 
AND D.dID = C.dID 
AND D.dID = p.dID; 
  • phpMyAdmin的錯誤

    :您有一個錯誤的SQL語法;檢查與您的MySQL服務器版本相對應的手冊,以便在''附近使用正確的語法'? AND D.dID = C.dID AND D.dID = p.dID LIMIT 0,30' 在列3

Db的圖:http://postimage.org/image/24gdqab8k/

http://postimage.org/image/24gfdtnqc/

+0

可能重複(http://stackoverflow.com/questions/5605907/get-users-comment-from-mysql-using-php) – 2011-04-09 16:56:32

+0

不重複條目。 – Jshee 2011-04-09 17:41:43

+0

「更新的代碼」和「test.php」有什麼區別?你的問題有點混亂:-( – Eric 2011-04-09 18:20:52

回答

1

好。您需要遵循一些基本的調試步驟。這裏有究竟是如何來解決這個問題:

  1. 首先,我的#1猜測什麼回事....閱讀了你的代碼,一個空的數據集將產生一個空的選擇框。因此,從最簡單的開始:您是否直接在數據庫上嘗試了SQL查詢(即使用類似phpMyAdmin或SQL命令行工具)?確保它的工作和(同樣重要的)返回數據。

  2. 如果這樣,那麼將獲取調用上移到頂端的PHP中,只是獲取數據並將其回顯到屏幕(換句話說,刪除所有的HTML)。這至少會告訴你它是否從數據庫中獲取數據,並且你的PHP PDO調用是正確的。

  3. 最後,如果看起來似乎沒有任何錯誤,請確定PDO庫是否引發SQL錯誤。也許它不能連接到數據庫;也許你的查詢返回空行。很簡單:

    print_r($sth3->errorInfo()); 
    
  4. 你有沒有做對輸出一個「查看源文件」?是否寫出任何選項標籤? bensiu的回答是正確的,因爲你的「印刷」聲明需要雙引號,而不是單引號。

我保證,如果你遵循這些步驟,您的代碼將工作的[獲取用戶評論從MySQL使用PHP] ;-)

+0

埃裏克#1,正常工作請參閱** test.php文件內容* *。 – Jshee 2011-04-09 18:16:37

+0

太棒了!您是否嘗試過#2和#3以及#4呢?;-) – Eric 2011-04-09 18:18:39

+0

#2 - 將所有選項輸出爲'$ row'...請參閱上面的test.php。 – Jshee 2011-04-09 18:19:49

0

如果這

<select id='courseInfoDD' name='courseID' tabindex='1'> 
    while($row3 = $sth3->fetch(PDO::FETCH_ASSOC)) { 
    echo "<option>$row3</option>"; 
    } 
</select> 

真的是所有的HTML,那麼你的問題是,這會HTML,而不是PHP。你想讓它成爲PHP,對吧?

<select id='courseInfoDD' name='courseID' tabindex='1'> 
    <?php 
    while($row3 = $sth3->fetch(PDO::FETCH_ASSOC)) { 
     echo '<option>$row3</option>'; 
    } 
    ?> 
</select> 
+0

請參閱更新的代碼 – Jshee 2011-04-09 18:02:15

0
print "<option>{$row3}</option>"; 

echo "<option>$row3</option>"; 

雙引號和你缺少<?php和'?>」標記

<select id='courseInfoDD' name='courseID' tabindex='1'> 
<?php 
    while($row3 = $sth3->fetch(PDO::FETCH_ASSOC)) { 
    echo "<option>$row3</option>"; 
    } 
?> 
</select>