首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP academy教程-查询方法

问PHP academy教程-查询方法
EN

Stack Overflow用户
提问于 2013-11-01 22:08:42
回答 3查看 703关注 0票数 1

我最近开始阅读本系列教程(http://www.youtube.com/playlist?list=PLfdtiltiRHWF5Rhuk7k4UAU1_yLAZzhWc),在编写DB类时遇到了一个问题。它在第八个视频中。

我的查询功能似乎不太好用。当显示“已连接”回显时,我可以成功地连接到数据库。但是从来不会显示成功的回声。

DB.php:

代码语言:javascript
复制
<?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中,我使用与视频中相同的行:

代码语言:javascript
复制
DB::getInstance()->query('SELECT username FROM users WHERE username = ?', array('alex'));

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

感谢您的宝贵时间!!

EN

回答 3

Stack Overflow用户

发布于 2013-11-01 22:13:30

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

代码语言:javascript
复制
$this->_pdo = new PDO('mysql:host='.config::get('mysql/host').';dbname='.config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
票数 1
EN

Stack Overflow用户

发布于 2016-08-30 01:03:56

__construct()中的问题

错误:_construct()

右图是:__construct()

私有函数__construct() { try { $this->_pdo =新密码配置::get(‘mysql/用户名’),配置::get(‘mysql/ PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),’) );echo 'connected';} catch(PDOException $e) { die($e->getMessage());}}

票数 0
EN

Stack Overflow用户

发布于 2015-05-22 01:09:54

尝试复制/粘贴此代码。

代码语言:javascript
复制
    <?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';
            }
        }
    }

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19728414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档