Mysql致命错误:未捕获的错误:在布尔值上调用成员函数fetch()

时间:2019-04-20 14:38:38

标签: php mysql pdo

<?php
$host = "localhost";
$user = "root";
$password = '';
$dbname = "rokon";

$dsn = 'mysql:host='.$host.';dbname'.$dbname;

$pdo = new PDO($dsn, $user, $password);


$query = 'SELECT * FROM customar';
$query = $pdo->query($query);

while($row = $query->fetch(PDO::FETCH_OBJ)){
    echo $row->firstname;
    echo '<br>';
}


?>

运行此代码时出现错误,错误是

  

致命错误:未捕获错误:调用成员函数fetch()   布尔值

2 个答案:

答案 0 :(得分:2)

$dsn = 'mysql:host='.$host.';dbname'.$dbname;

看起来您在分配数据库名称时出错。您忘记了=符号。

只需将其更新为

$dsn = 'mysql:host='.$host.';dbname='.$dbname;

然后此代码应该起作用。

答案 1 :(得分:1)

也请尝试使用此代码。

<?php

$host = "localhost";
$user = "root";
$password = '';
$dbname = "rokon";

try {
    $dns = "mysql:host=".$host.";dbname=".$dbname.";charset=utf8";
    $pdo = new PDO($dns, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "PDOError: " . $e->getMessage()." In ".__FILE__;
}
$query = 'SELECT * FROM customar';
$query = $pdo->query($query);

while ($row = $query->fetch(PDO::FETCH_OBJ)) {
    echo $row->firstname;
    echo '<br>';
}