PHP通过PDO查询结果循环

时间:2015-03-08 15:21:08

标签: php oop pdo foreach

我是OOP和PDO的新手。在此先感谢您的帮助!

我遇到了将SQL查询结果循环到页面的问题。

这是我的notes.inc.php

$note->tulosta_notet('notes');

在课堂上注意我有方法

public function tulosta_notet($table) {
        $sql ="SELECT * FROM " . $table . "";
        $result = $this->_db->query($sql);

        echo "<br />";
        print_r($result);

        foreach ($result as $row) {
            print $row["id"] . "-" . $row["note_text"] ."<br/>";
        }
    }

我使用print_r($result);

获得了正确的结果

所以查询是正确的,我只是不能让行以正确的方式打印到页面。

这是print_r($ result);

的输出
DB Object ( [_pdo:DB:private] => PDO Object ( )
 [_query:DB:private] => PDOStatement Object ( [queryString] => SELECT * FROM notes ) 
[_error:DB:private] => [_results:DB:private] => Array ( 
[0] => stdClass Object (
 [id] => 1 
[created] => 2015-03-08 13:50:43 [edited] => 2015-03-08 14:50:43 
[note_text] => hei hei moi moi hei hei hei [
user_id] => 1 ) 

[1] => stdClass Object ( 
[id] => 2 
[created] => 2015-03-08 14:23:55
 [edited] => 2015-03-08 15:23:55 
[note_text] => text text text text text text text text text text text text text text text text text text
 [user_id] => 1 ) 
) [_count:DB:private] => 2 )

我做错了什么?

我是否应该在notes.inc.php中进行循环,我应该从tulosta_notet()返回什么才能使它工作? 感谢

-E

这里是var_dump($ this-&gt; _db);退出;

object(DB)#3 (5) { 
["_pdo":"DB":private]=> object(PDO)#4 (0) { } 
["_query":"DB":private]=> object(PDOStatement)#9 (1) {
 ["queryString"]=> string(28) "SELECT * FROM notes" 
} 
["_error":"DB":private]=> bool(false)
 ["_results":"DB":private]=> array(2) { 
[0]=> object(stdClass)#5 (5) { 
["id"]=> string(1) "1" 
["created"]=> string(19) "2015-03-08 13:50:43" 
["edited"]=> string(19) "2015-03-08 14:50:43" 
["note_text"]=> string(27) "hei hei moi moi hei hei hei" 
["user_id"]=> string(1) "1" 
} 

[1]=> object(stdClass)#10 (5) {
 ["id"]=> string(1) "2" 
["created"]=> string(19) "2015-03-08 14:23:55" 
["edited"]=> string(19) "2015-03-08 15:23:55" 
["note_text"]=> string(90) "text text text text text text text text text text text text text text text text text text " ["user_id"]=> string(1) "1" 
} 
} ["_count":"DB":private]=> int(2) }

类DB中的query()

 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) {
                    // echo $param;
                    $this->_query->bindValue($x, $param);
                    $x++;
                    // echo $x."<br>";
                }
            }

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

        return $this;
    } 

1 个答案:

答案 0 :(得分:0)

在您的查询中&#39;方法你使用流畅的接口(返回$ this返回当前对象)。因此,当您使用print_r时,将打印一个对象。修改您的查询方法或同样使用获取功能:    公共函数tulosta_notet($ table){

        $sql ="SELECT * FROM " . $table . "";
        $result =  $this->_db->prepare($sql);
        $res=   $result->execute();

        for ($i=0;$i<count($res);$i++) {
        print $res[$i]["id"] . "-" . $res[$i]["note_text"] ."<br/>";
        }
}
相关问题