**修订版
<?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/
和
答案 0 :(得分:1)
好。您需要遵循一些基本的调试步骤。以下是如何解决问题:
首先,我猜测正在发生的事情......读取代码时,空数据集将产生一个空的选择框。所以从最简单的开始:您是否直接在数据库上尝试过SQL查询(例如使用phpMyAdmin或SQL命令行工具)?确保它有效并且(同样重要)返回数据。
如果可以,那么将fetch调用移到顶部的PHP中,只需获取数据并将其回显到屏幕上(换句话说,删除所有HTML)。这至少会告诉您它是否从数据库中获取数据并且您的PHP PDO调用是否正确。
最后,如果看起来没有任何错误,请查明PDO库是否抛出了SQL错误。也许它无法连接到数据库;也许你的查询返回空行。很简单:
print_r($sth3->errorInfo());
您是否在输出中完成了“查看源”?它是否写出任何选项标签? bensiu的答案是正确的,因为你的“打印”声明周围需要双引号,而不是单引号。
我保证,如果您按照这些步骤操作,您的代码将起作用; - )
答案 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>