Php查询错误
区块1Php查询错误,php,sql,Php,Sql,区块1 <?php // Filter our input. $dID = filter_input(INPUT_GET, 'dID', FILTER_SANITIZE_NUMBER_INT); if(!$dID) { echo "<h2 style='color:red;'>Invalid Department</h2>"; exit; } $username = "###"; $password = "####"; $pdo = new PDO(
<?php
// Filter our input.
$dID = filter_input(INPUT_GET, 'dID', FILTER_SANITIZE_NUMBER_INT);
if(!$dID) {
echo "<h2 style='color:red;'>Invalid Department</h2>";
exit;
}
$username = "###";
$password = "####";
$pdo = new PDO('mysql:host=localhost;dbname=####', $username, $password);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sth = $pdo->prepare('
区块2
<?php
echo "<span>{$row['name']}";
// Did we get any professors in this dept?
while($row2 = $sth->fetch(PDO::FETCH_ASSOC)) {
echo "<span>{$row['fname']} | {$row['lname']} | </span>"
; // echo
}
unset($sth);
?>
部门表:
教授表:
它似乎不喜欢我的查询,不知道为什么,它没有从数据库中提取任何内容。这可能是sql错误吗?我被难住了
当我在PhpmyAdmin中测试时,它会给出:
更新的查询:
选择名称、fname、lname、picpath、电子邮件
系里的,教授
系在哪里
和Department.dID=
但它仍然不起作用。基本上,该页面的url中有一个例子:“/dept.php?dID=30”,它获取了dID,并且应该显示一个系中的所有教授。有人吗?您是否尝试过直接对数据库执行查询?我不是PHP程序员,我的大部分SQL经验都是T-SQL,但是您的where子句说
where dID=?
-我猜这可能是几件事。首先,除非它是一个特殊的MySql东西,否则问号prolly不会告诉你你想要什么。此外,在本例中,dID是一个模棱两可的引用,因为两个表似乎都有dID列。此外,我还认为(再一次,除非MySql与T-SQL的工作方式不同),您需要的是加入,而不是将Department.dID=Professor.dID
放在where子句中。此外,重申一下,在将其放入PHP之前直接执行此操作可能会让您在找出查询不起作用的原因时产生一些好的错误。您是否尝试过直接对数据库执行查询?我不是PHP程序员,我的大部分SQL经验都是T-SQL,但是您的where子句说where dID=?
-我猜这可能是几件事。首先,除非它是一个特殊的MySql东西,否则问号prolly不会告诉你你想要什么。此外,在本例中,dID是一个模棱两可的引用,因为两个表似乎都有dID列。此外,我还认为(再一次,除非MySql与T-SQL的工作方式不同),您需要的是加入,而不是将Department.dID=Professor.dID
放在where子句中。此外,重申一下,在将其放入PHP之前直接执行此操作可能会让您在找出查询不起作用的原因时产生一些好的错误。在while
循环中
while($row2 = $sth->fetch(PDO::FETCH_ASSOC)) {
echo "<span>{$row['fname']} | {$row['lname']} | </span>"
; // echo
}
while($row2=$sth->fetch(PDO::fetch_ASSOC)){
回显“{$row['fname']}{$row['lname']}}”
;//回声
}
您正在使用$row2,但在
echo
中,您正在while
循环中使用$row['fname']
while($row2 = $sth->fetch(PDO::FETCH_ASSOC)) {
echo "<span>{$row['fname']} | {$row['lname']} | </span>"
; // echo
}
while($row2=$sth->fetch(PDO::fetch_ASSOC)){
回显“{$row['fname']}{$row['lname']}}”
;//回声
}
您正在使用$row2,但在
echo
中,您正在使用$row['fname']
尝试使用WHERE Department.dID=?
instead@yoavmatchulsky-是的,我试过了。我的查询现在已更新。它没有显示错误,只显示上面的“输出”,请尝试使用WHERE Department.dID=?
instead@yoavmatchulsky-是的,我试过了。我的查询现在已更新。它没有显示错误,只显示上面的“输出”
while($row2 = $sth->fetch(PDO::FETCH_ASSOC)) {
echo "<span>{$row['fname']} | {$row['lname']} | </span>"
; // echo
}