Reputation:
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');
Upvotes: 0
Views: 100
Reputation: 3823
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.
Upvotes: 1