Php 致命错误:未捕获错误:调用第9行布尔值上的成员函数execute()

Php 致命错误:未捕获错误:调用第9行布尔值上的成员函数execute(),php,pdo,Php,Pdo,我是PDO的新手,我一直在寻找其他类似的问题,但我仍然没有找到任何具体的答案 <?php require 'header.php'; require '../lib/dbconnect.php'; $SID = isset($_POST['S_ID']) ? $_POST['S_ID'] : ""; $query = 'SELECT * FROM student WHERE `S_ID` = :S_ID'; $statement = $conn-

我是PDO的新手,我一直在寻找其他类似的问题,但我仍然没有找到任何具体的答案

<?php
    require 'header.php';
    require '../lib/dbconnect.php';

    $SID = isset($_POST['S_ID']) ? $_POST['S_ID'] : ""; 
    $query = 'SELECT * FROM student WHERE `S_ID` = :S_ID';
    $statement = $conn->prepare($query);
    $statement->execute([':S_ID' => $S_ID]); <--- it indicates that this line (line 9) has somehow an error
    $student = $statement->fetch(PDO::FETCH_OBJ);   
?>

编辑:对不起,我是新来的,呵呵。
我不确定错误是什么,但它只是告诉我执行函数失败了。可能是我的查询不正确?我只是想确认我写的代码是否正确?非常感谢

为什么有两个不同的变量
$SID
$suid
?我想这条线

$query='从学生中选择*,其中'S_ID`=:S_ID'

应改为

$query='SELECT*从学生位置 S_ID=:S_ID'


尝试此操作。

您的准备失败。检查以找出原因。请包括一个问题,而不仅仅是代码转储。编写的代码是正确的,尽管下面的答案是正确的,因为
$SID
$S_ID
不同,但您的代码没有走那么远。当您检查PDO错误时,它会说什么?请确保检查准确的错误消息,而不仅仅是它失败了。哦,很抱歉没有弄清楚。我已经将$SID更正为$S_ID。错误如下所示:致命错误:未捕获错误:调用布尔值中的成员函数execute()。。。我不确定这是什么,这只是PHP的错误。你关注我发布的链接了吗?使用try/catch块包围PDO代码,并添加
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)使用反勾号引用表名和列名是引用它们的正确方式。这并不总是必要的,但它是正确的。