我正在尝试使用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)
你不应该做好准备.Prepare返回您应该从中获取的PDOStatement对象,并执行返回基于该语句执行成功的布尔值.
$stmt = $connection->prepare($query);
$result = $stmt->execute(['General Motors']);
if ($result) {
$stmt->fetchAll(PDO::FETCH_UNIQUE);
}
Run Code Online (Sandbox Code Playgroud)