dongxiai3003 2016-09-26 23:21
浏览 25
已采纳

我的PDO课程在哪里出错了? [关闭]

I am a little new to the PDO object, and I am simply trying to make a connection to the database and return a mySQL query. I have scoured the internet (including this site) to try and find the solution. I have found many similar solutions, but nothing is working. I know that it is probably a really simple fix, but I can't seem to find it.

Thanks in advance for your help!

PDO Class

 <?php
    class Database {

    private static $host = "localhost";
    private static $db_name = "c9";
    private static $username = "theandrewilliam";
    private static $password = "";
    private static $socket = "mysql";

    //Instance of class
    private $instance = NULL;

    //Connection to Database (predefined function)
    public function __construct(){

        if($this -> instance == NULL){
            try{

                $db = new PDO(self::$socket.':'.'host'.'='.self::$host.';'
                .'dbname'.'='.self::$db_name,self::$username,self::$password);

                $this -> instance = $db;

            } catch(PDOException $e){

                die($e -> getMessage());

            }
        }

    }

    //Queries
    public function query($sql){

        $query = $this -> instance = prepare($sql);
        $query -> execute();

        return $query;

    }

    }

PDO Object


<?php
    require_once('db.php');

    $data = new Database();

    $sq = 'SELECT * FROM body';

    $result = $data -> query($sq);

    while($row = $result -> $query -> fetch(PDO::FETCH_ASSOC)){

    $body = $row['text'];
    echo $body;

    }

Error thrown

Fatal error: Call to undefined function prepare() in /home/ubuntu/workspace/db.php on line 36 Call Stack: 0.0003 233728 1. {main}() /home/ubuntu/workspace/post.php:0 0.0011 254688 2. Database->query() /home/ubuntu/workspace/post.php:8

  • 写回答

3条回答 默认 最新

  • dongwenyou4298 2016-09-26 23:33
    关注

    The method fetch() is used by a PDOStatement (here, $result). So you should remove $query in your while.

    while($row = $result -> fetch(PDO::FETCH_ASSOC)){
    
        $body = $row['id'];
        echo $body;
    
    }
    

    https://secure.php.net/manual/en/pdostatement.fetch.php

    Edit: You have some typo when using the prepare method, it should be:

    $query = $this -> instance -> prepare($sql);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值