无法运行查询?

时间:2014-04-24 17:16:24

标签: php

我正在使用oop中的新登录系统。 我有以下代码:

我的index.php看起来像这样: 第6行中的变量$user发生错误。

为什么我不能在第6行之后收到代码的结果?

<?
require_once ('core/init.php');

echo 'WORKING!';

$user = DB::getInstance()->get('users', array('username', '=', 'ozan'));

if ($user->_error()){
    echo 'NO USER!';
}
else {
    echo 'OK!';
}

这是我的DB.php(类文件)

<?

class DB {

    private static $_instance = null;
    private 
        $_pdo, 
        $_query, 
        $_error = false,
        $_result, 
        $_count = 0;

    private function __construct() {
        try {
            $this->_pdo = new PDO('mysql:host='. Config::get('mysql/host') . ';dbname' . Config::get('mysql/db'), Config::get('mysql/password') );
        } 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(pos, $param);
                    x++;
                }

                if($this->_query->execute()) {
                    $this->_result = $this->_query->fetchAll(PDO:FETCH_OBJ);
                    $this->_count = $this->_query->rowCount();
                }
                else {
                    $this->_error = true;
                }
            }
        }

        return $this;
    }

    public function action($action, $table, $where = array() ) {
        if ( count($where) === 3 ) {
            $operators = array ('=','>','<','<=','<=');

            $field =    $where[0];
            $operator = $where[1];
            $value =    $where[2];

            if ( in_array($operator, $operators)) {
                $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?"

                if ( !$this->query($sql, array($value))) {
                    return $this;
                }
            }
        }
        return false;
    }

    public function get($table, $where) {
        return $this->action('SELECT *', $table, $where);
    }

    public function delete($table, $where) {
        return $this->action('DELETE', $table, $where);
    }

    public function error() {
        return $this->_error;
    }

}
如果需要,

init.php文件:

<?
session_start();

$GLOBALS['config'] = array (
    'mysql' => array(
        'host' => '***',
        'user' => '***',
        'pass' => '***',
        'db'   => '***',
    ),
    'remember' => array(
        'cookie_name'   => 'hash',
        'cookie_expiry' => 604800
    ),
    'session' => array(
        'session_name' => 'user'
    )
);

spl_autoload_register(function ($class) {
    require_once 'classes/'. $class . '.php';
});

require_once ('functions/sanitize.php');

1 个答案:

答案 0 :(得分:1)

在您的数据库类中,$_error是一个私有变量。看起来函数名称是error(没有下划线。)所以你应该改为调用$user->error();