PDO查询返回true但 - > fetch()返回错误

Ven*_*ush -1 php pdo

我正在尝试使用PDO从我的数据库中选择信息.直到->prepare()->execute()方法正常工作的一切.转储响应时,我得到一个布尔值true响应.

但是一旦我使用->fetchAll()我就会收到以下错误:

致命错误:在布尔值中调用成员函数fetchAll()....

我不确定为什么会这样.我应该在结果中收到一行.代码如下:

    $host = 'localhost';
    $db   = 'database';
    $user = 'useername';
    $pass = 'password';
    $charset = 'utf8mb4';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $connection = new PDO($dsn, $user, $pass, $opt);
    $connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    $query = 'SELECT * FROM gen_dealers WHERE dealer = ?';
    $result = $connection->prepare($query)->execute(['General Motors']);

    echo $result; // returns 1

    $result->fetchAll(PDO::FETCH_UNIQUE); // returns the Fatal error mentioned above
Run Code Online (Sandbox Code Playgroud)

Dev*_*von 9

你不应该做好准备.Prepare返回您应该从中获取的PDOStatement对象,并执行返回基于该语句执行成功的布尔值.

$stmt = $connection->prepare($query);
$result = $stmt->execute(['General Motors']);
if ($result) { 
    $stmt->fetchAll(PDO::FETCH_UNIQUE);
}
Run Code Online (Sandbox Code Playgroud)