我正在使用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');
答案 0 :(得分:1)
在您的数据库类中,$_error
是一个私有变量。看起来函数名称是error
(没有下划线。)所以你应该改为调用$user->error();
。