Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php查询错误_Php_Sql - Fatal编程技术网

Php查询错误

Php查询错误,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(

区块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('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
        }