PHP学院教程 - 查询方法

时间:2013-11-01 14:08:42

标签: php mysql sql youtube

我最近开始观看这一系列教程(http://www.youtube.com/playlist?list=PLfdtiltiRHWF5Rhuk7k4UAU1_yLAZzhWc)并遇到了编写DB类的问题。 它在第8个视频中。

我的查询功能似乎运作良好。我可以成功地连接到数据库,因为" connected"显示回声。但成功回声从未显示过..

DB.php:

<?php
class DB {
    private static $_instance = null;
    private $_pdo, 
            $_query, 
            $_error = false, 
            $_results, 
            $_count = 0;

    private function __construct(){
        try{
            $db = new PDO('mysql:host='.config::get('mysql/host').';dbname='.config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
            echo '->Connected'.'<br />';
        }
        catch(PDOException $e){
            die($e->getMessage());  
        }
    }

    public static function getInstance() {
        if(!isset(self::$_instance)) {
            self::$_instance = new DB();
        }
        return self::$_instance;
    }

    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()){
                echo 'Success';
            }
        }
    }
}

你能发现我的错误吗?试图找到我的函数不起作用的地方,我设法理解查询函数的第一个if语句未经验证。 在index.php中,我使用与视频中相同的行:

DB::getInstance()->query('SELECT username FROM users WHERE username = ?', array('alex'));

已成功创建所有数据库和表。我可以使用经典的try catch bloc和query方法访问和执行sql查询。 我特别不理解的是查询函数中的第一个if语句条件。

感谢您的时间!!

3 个答案:

答案 0 :(得分:1)

您的PDO对象存储在构造函数中的局部变量($db)中。将其分配给属性($_pdo),因为您的query()方法正在调用$this->_pdo->prepare()

$this->_pdo = new PDO('mysql:host='.config::get('mysql/host').';dbname='.config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));

答案 1 :(得分:0)

__construct()

中的

问题

wronge:_construct()

右边是:__ construct()

private function __construct(){             尝试{                 $ this-&gt; _pdo = new PDO(&#39; mysql:host =&#39; .Config :: get(&#39; mysql / host&#39;)。&#39 ;; dbname =&#39 ; .CONFIG ::得到(&#39;的mysql / DB&#39;),                         配置::得到(&#39;的mysql /用户名&#39;),                         配置::得到(&#39;的mysql /密码,&#39;)                 );             echo&#39; connected&#39 ;;                 } catch(PDOException $ e){                     死亡($ E-&GT;的getMessage());                 } }

答案 2 :(得分:-1)

尝试复制/粘贴此内容。

    <?php
class DB {
    private static $_instance = null;
    private $_pdo, $_query, $_error = FALSE, $_results, $_Count = 0;

    private function __construct() {
        try {
            $this -> _pdo = new PDO('mysql:host=' . config::get('mysql/host') . ';dbname=' . config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
            echo "Conectat";
        } catch(PDOExeption $e) {
            die($e -> getMessage());
        }
    }

    public static function getInstance() {
        if(!isset(self::$_instance)) {
            self::$_instance = new DB();
        }
        return self::$_instance;
    }

    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()){
                echo 'Success';
            }
        }
    }

}
相关问题