模棱两可的PDO声明 - Php?

Jsh*_*hee 1 php mysql mysql-error-1052

所以,我正试图获得某一课程的所有评论.它告诉course.php?cID = 1563的哪些评论是哪种方式的方式.cID是执行此区分的标识符.

它不断抛出这个致命的错误:致命错误:未捕获的异常'PDOException',消息'SQLSTATE [23000]:完整性约束违规:1052列'cID'在where子句中是不明确的'PDOStatement-> execute(Array)#1抛出在线42

(2)表的DB结构: 表

PHP:

<?php
// Get course information cID, prefix, code and dept info : name
$cID = filter_input(INPUT_GET, 'cID', FILTER_SANITIZE_NUMBER_INT);
if(!$cID) {
    echo "No cID specified.";
    exit;
}
$username = "###";
$password = "###";
$pdo2 = new PDO('mysql:host=localhost;dbname=####', $username, $password);
$pdo2->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sth2 = $pdo2->prepare('
    SELECT Co.info, Co.date
    FROM Course C, Comment Co
    WHERE C.cID = Co.cID
    AND cID = ?;
    ;');
$sth2->execute(array(
    $cID
));
?>
Run Code Online (Sandbox Code Playgroud)

PHP调用以上内容:

<?php
                    // Did we get any *course detail*
                    if($sth2->rowCount() > 0) {
                        $row = $sth2->fetch(PDO::FETCH_ASSOC);
                        echo "<img class='left' style='margin:5px;' src='img/courseComment.png'/> <p> {$row['info']} </p>";
                        } else {
                        echo "No results.";
                    }
                unset($sth2);
                ?>
Run Code Online (Sandbox Code Playgroud)

为什么会这样?如果有人可以请帮助我解释和修复代码,我将不胜感激.此url也具有页面的cID.

Jon*_*ier 6

您指的是cID两个表中都存在的列.更新您的查询($sth2)以指向其中一个表,如下所示:

SELECT Co.info, Co.date
    FROM Course C, Comment Co
    WHERE C.cID = Co.cID
    AND C.cID = ?;
Run Code Online (Sandbox Code Playgroud)