Ну, я попытался расширить класс mysqli с его наследованием, называемым Database, который может легко извлекать информацию из базы данных (в одну строку, если все сделано правильно).Пока это не работает, так как я получаю следующие ошибки:
Вот класс базы данных, как определено:
class Database extends mysqli{
private $select, $create, $insert, $alter, $update, $delete, $drop;
protected $mysql, $result, $table, $column, $where, $value, $limit, $order, $type;
public function __construct($host, $user, $pass, $db){
$this->mysql = new mysqli($host, $user, $pass, $db)
or die("Error connecting to the database {$db}");
}
public function __destruct(){
$this->mysql->close();
}
protected function prepareQuery(){
if ($prepare = $this->mysqli->prepare($this->query)) {
trigger_error("Problem preparing query ($this->query) ".$this->mysqli->error, E_USER_ERROR);
}
return $prepare;
}
protected function reset(){
unset($this->table);
unset($this->column);
unset($this->where);
unset($this->value);
unset($this->limit);
unset($this->order);
}
public function select($column){
$this->select = implode(",", $column);
return $this;
}
public function table($table){
$this->table = $table;
return $this;
}
public function where($where, $comparison = "=", $logic){
$i = 0;
foreach ($where as $col => $val){
$wherestring .= (is_array($comparison)) ? " {$col} {$comparison[$i]} '{$val}'" : " WHERE {$col} {$comparison} '{$val}'";
$wherestring .= ($i < (count($where)-1))?" {$logic[$i]}" :" ";
$i++;
}
$this->where = $wherestring;
return $this;
}
public function limit($limit){
$this->limit = $limit;
return $this;
}
public function order($order){
$this->order = $order;
return $this;
}
public function runquery($method){
$query = "{$method} {$this->select} FROM {$this->table}";
if(!empty($this->where)) $query .= " WHERE {$this->where}";
if(!empty($this->limit)) $query .= " LIMIT {$this->limit}";
if(!empty($this->order)) $query .= " ORDER BY {$this->order}";
echo "The generated Query is: \n".$query;
$this->result = parent::query($query);
$result = parent::fetch_array($this->result);
return $result;
}
}
И вот как я запускаю его из скриптаfile:
include("inc/config.php");
include("classes/class_data.php");
$db = new Database($dbhost, $dbuser, $dbpass, $dbname);
$row = $db->select(array("password","email"))->table($prefix."users")->where(array("uid"=>1, "username"=>Admin"),array("=","="),array("AND"))->limit(2)->order("uid")->runquery("SELECT");
Это не сработало, и я получил следующие предупреждения и сообщения об ошибках: Код:
Warning: mysqli::query() [mysqli.query]: Couldn't fetch Database in classes/class_data.php on line 70
Fatal error: Call to undefined method mysqli::fetch_array() inclass_data.php on line 71
Я немного запутался, так как не могу понять,способ решить эту проблему.Может кто-нибудь из вас, пожалуйста, помогите?Я очень ценю это.
Спасибо