PDO对象和数组

时间:2015-03-21 06:58:31

标签: php mysql arrays oop pdo

我已经通过here

关注了PHP Academy的OOP教程

DB类的构建方式是将数据库结果作为Object

获取
public function query($sql, $params=array()){
    $this->_error = false;
    if($this->_query = $this->_pdo->prepare($sql)){
        $x=1;
        if(count($params)){
            foreach ($params as $param) {
                $this->_query->bindValue($x, $param);
                $x++;
            }
        }

        if($this->_query->execute()){
            $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
            $this->_count = $this->_query->rowCount();
        }else{
            $this->_error = true;
        }
    }

    return $this;
}

这很重要,因为用户登录就像这样

public function login($username = null, $password = null){

    $user = $this->find($username);

    if($user){
        if($this->data()->password === Hash::make($password, $this->data()->salt)){
            Session::put($this->_sessionName, $this->data()->id);
            return true;
        }
    }
    return false;
}

现在,当我想实现foreach以逐行获得结果时,他们要求一个数组

$result = $product->getData($_GET['id']);
if(!empty($result)){
  foreach ($result as $row) {echo $row['id'];}}

getData函数

public function getData($_id){
    return $this->_db->get('products', array('id', '=', $_id))->results();

}

结果函数在DB类

public function results(){
    return $this->_results;
}

当我更改Fetch All以获取OBJ和ARRAY时,用户无法登录。

我该怎么办?要改变哪个功能?

抱歉英语不好

先谢谢

0 个答案:

没有答案