首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO fetchAll非对象

PDO fetchAll非对象
EN

Stack Overflow用户
提问于 2014-09-06 03:11:39
回答 2查看 100关注 0票数 0

为什么我会得到错误的Fatal error: Call to a member function fetchAll()。我已经看过了与相同错误有关的其他问题,但是我的代码似乎很好,它似乎与$this->$dbvar_dump返回object(PDO)#2 (0) { }有关。

index.php

代码语言:javascript
复制
<?php  
    include('assets/misc/functions.php');

  $cars = new Cars(connection());

  $listAll = $cars->listCars();

  var_dump($listCars);
?>

config.php

代码语言:javascript
复制
<?php

function connection()
{
    try
    {
        $host   = 'localhost';
        $dbuser = 'jzmcond_pdo1';
        $dbpass = '';
        $dbname = 'jzmcond_pdo1';

        $dbConnection = new PDO("mysql:host=" . $host . ";dbname=" . $dbname.";", $dbuser, $dbpass);

        return $dbConnection;
    } catch (PDOException $error)
    {
        echo $error->getMessage();
        return FALSE;
    }
}
?>

函数:

代码语言:javascript
复制
<?php

include('config.php');

class Cars{
    protected $db;

    public function __construct(PDO $db){
        $this->db = $db;
    }

    public function listCars()
    {
        $query = $this->db->prepare("SELECT `id` `rego` `engineSize` `type` `colour` `year` `additionalFeatures` FROM `cars`")->execute();
        //return $query->fetchAll();

        var_dump($this->db); exit();
    }
}

?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-06 03:34:17

您的查询语法是错误的,没有加逗号

变化

代码语言:javascript
复制
SELECT `id` `rego` `engineSize` `type` `colour` `year` `additionalFeatures` FROM `cars

代码语言:javascript
复制
SELECT `id`, `rego`, `engineSize`, `type`, `colour`, `year`, `additionalFeatures` FROM `cars`

在这种情况下,您甚至不需要做准备,尝试如下:

代码语言:javascript
复制
public function listCars()
{
    $query = "SELECT `id`, `rego`, `engineSize`, `type`, `colour`, `year`, `additionalFeatures` FROM `cars`";
    $stmt = $this->db->query($query);
    if (!$stmt) {
        echo "\nPDO::errorInfo():\n";
        print_r($this->db->errorInfo());
        exit();
    }
    $rows = $stmt->fetchAll();

    return $rows;
}
票数 3
EN

Stack Overflow用户

发布于 2014-09-06 03:22:45

看看这个有用不管用。我从来没有像你那样做过,但如果我要尝试,这就是我要尝试的.

代码语言:javascript
复制
<?php

function connection()
{
    try
    {
        $host   = 'localhost';
        $dbuser = 'jzmcond_pdo1';
        $dbpass = '';
        $dbname = 'jzmcond_pdo1';

        $dbConnection = new PDO("mysql:host=$host;dbname=$dbname;", $dbuser, $dbpass);
        return $dbConnection;
    } catch (PDOException $error)
    {
        echo $error->getMessage();
        return FALSE;
    }
}

代码语言:javascript
复制
class Cars{
    protected $db;

    public function __construct($db){
        $this->db = $db;
    }

    public function listCars()
    {
        // as @Meda suggested, commas in query, I never noticed that
        $query = $this->db->prepare("SELECT `id`,`rego`,`engineSize`,`type`,`colour`,`year`,`additionalFeatures` FROM `cars`");
        $query->execute();

        if($query->rowCount() > 0) {

                while($result = $query->fetch(PDO::FETCH_ASSOC)) {
                        $_array[]   =   $result;
                    }
            }
        return  ($query->rowCount() > 0)? $_array:0;
    //  return  ($query->rowCount() > 0)? $query->fetchAll():0;
    }
}

使用

代码语言:javascript
复制
include('config.php');
$db = connection();

 if($db !== false) {
      $CarDude = new Cars($db);
      $_list = $CarDude->listCars();
      print_r($_list);
     } ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25696419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档