douchong4730 2013-11-03 14:54
浏览 33
已采纳

检索数据库表信息OOP [重复]

This question already has an answer here:

I am trying to retrieve my database rows using OOP I keep getting an error though. I feel like I am missing something simple to make this work. My code is below:

Class CommentFactory {      
    public function getImage(PDO $conn){
        $stmt2 = $conn->prepare('SELECT * FROM `pictures`');
        $stmt2->execute();

        return $stmt2;
    }
}


$statement = new CommentFactory();
$statement->getImage($conn);
while ($idOfComment = $statement->fetch(PDO::FETCH_ASSOC)) {
    echo $idOfComment['photo_id'];          
}

The error I am getting is:

Fatal error: Call to undefined method CommentFactory::fetch() in /var/www/CommentSystem/includes/Classes.php on line 29

I just recently began trying to program in OOP so my understanding is still vague.

</div>
  • 写回答

2条回答 默认 最新

  • doushang1964 2013-11-03 15:01
    关注

    You are only returning a value from the method getImage(), therefore you should do:

    Class CommentFactory {
    
        protected $conn;
    
        public function getImage($conn){
            $stmt2 = $conn->prepare('SELECT * FROM `pictures`');
            $stmt2->execute();
    
            return $stmt2;
        }
    }
    
    
    $statement = new CommentFactory();
    $values = $statement->getImage($conn);
    while ($idOfComment = $values->fetch(PDO::FETCH_ASSOC)){
        echo $idOfComment['photo_id'];
    
    }
    

    Edit: However, as engvrdr noted, this is not the best you can do. You could the method to return the array, furthermore, you can pass the connection in the constructor as shown here:

    Class CommentFactory {
    
        protected $conn;
    
        public function __construct($conn) {
          $this->con = $conn;
          }
    
        public function getImage(){
            $stmt2 = $this->conn->prepare('SELECT * FROM `pictures`');
            $stmt2->execute();
            return $values->fetchAll(PDO::FETCH_ASSOC);
        }
    }
    
    
    $statement = new CommentFactory($conn);
    foreach ($statement->getImage() as $Image){
        echo $Image['photo_id'];    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。