1

最近、この一連のチュートリアル ( http://www.youtube.com/playlist?list=PLfdtiltiRHWF5Rhuk7k4UAU1_yLAZzhWc ) を見始めたところ、DB クラスの作成で問題が発生しました。8回目の動画です。

クエリ機能がうまく機能していないようです。「接続済み」のエコーが表示されるので、データベースに正常に接続できます。しかし、成功のエコーは表示されません..

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 ブロックとクエリ メソッドを使用して、SQL クエリにアクセスして実行できます。私が特に理解していないのは、クエリ関数の最初の if ステートメントの条件です。

ありがとうございました!!

4

3 に答える 3

0

__construct() の問題

間違い:_construct()

右は: __construct()

private function __construct() { try { $this->_pdo = new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/ db'), Config::get('mysql/ユーザー名'), Config::get('mysql/password') ); echo '接続済み'; } catch(PDOException $e) { die($e->getMessage()); } }

于 2016-08-29T17:03:56.460 に答える
-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';
            }
        }
    }

}
于 2015-05-21T17:09:53.630 に答える