将数据从Mysql拉入Dropdown

时间:2011-04-09 16:47:49

标签: php sql

**修订版

  <?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),它都会拉出所有课程。我在select中说了一句话,说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服务器版本对应的手册,以获得正确的语法,以便在附近使用&#39;? AND D.dID = C.dID AND D.dID = p.dID LIMIT 0,30&#39;在第3行

Db Img:http://postimage.org/image/24gdqab8k/

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

3 个答案:

答案 0 :(得分:1)

好。您需要遵循一些基本的调试步骤。以下是如何解决问题:

  1. 首先,我猜测正在发生的事情......读取代码时,空数据集将产生一个空的选择框。所以从最简单的开始:您是否直接在数据库上尝试过SQL查询(例如使用phpMyAdmin或SQL命令行工具)?确保它有效并且(同样重要)返回数据。

  2. 如果可以,那么将fetch调用移到顶部的PHP中,只需获取数据并将其回显到屏幕上(换句话说,删除所有HTML)。这至少会告诉您它是否从数据库中获取数据并且您的PHP PDO调用是否正确。

  3. 最后,如果看起来没有任何错误,请查明PDO库是否抛出了SQL错误。也许它无法连接到数据库;也许你的查询返回空行。很简单:

    print_r($sth3->errorInfo());
    
  4. 您是否在输出中完成了“查看源”?它是否写出任何选项标签? bensiu的答案是正确的,因为你的“打印”声明周围需要双引号,而不是单引号。

  5. 我保证,如果您按照这些步骤操作,您的代码将起作用; - )

答案 1 :(得分: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> 

答案 2 :(得分:0)

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

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

双引号,你遗漏了<?php和`?&gt;'标签

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