dpziir0079 2014-04-24 17:16
浏览 27

无法运行查询?

I am working on a new login system in oop. I have the following codes:

My index.php looks like this: The error occurs with the variable $user in line 6.

Why cant I recieve the result of the codes after the 6'th line?

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

echo 'WORKING!';

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

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

here is my DB.php (class file)

<?

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 file if needed:

<?
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条回答 默认 最新

  • dreamevil0002 2014-04-24 17:19
    关注

    In your DB class, $_error is a private variable. It looks like the function name is error (no underscore.) So you should be calling $user->error(); instead.

    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么