воскресенье, 24 ноября 2013 г.

Простой класс для работы с базой данных

Простой класс для работы с базой данных



class DB {
    private static $instance;
    private $MySQLi;
    private function __construct(array $dbOptions){
        $this->MySQLi = @ new mysqli($dbOptions['db_host'],$dbOptions['db_user'], $dbOptions['db_pass'],$dbOptions['db_name'] );
        if (mysqli_connect_errno()) {
             throw new Exception('Ошибка базы данных.');
        }
        $this->MySQLi->set_charset("utf8");
    }
    public static function init(array $dbOptions){
        if(self::$instance instanceof self){
            return false;
        }
        self::$instance = new self($dbOptions);
    }
    public static function getMySQLiObject(){
        return self::$instance->MySQLi;
    }
    public static function query($q){
        return self::$instance->MySQLi->query($q);
    }
    public static function esc($str){
        return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str));
    }
    public static function insert_id($str){
        return self::$instance->MySQLi->insert_id;
    }
    public static function affected_rows(){
        return self::$instance->MySQLi->affected_rows;
    }
}



Пример работы с классом


<?php
/* Конфигурация базы данных. Добавьте свои данные */
$dbOptions = array(
    'db_host' => 'localhost',
    'db_user' => '',
    'db_pass' => '',
    'db_name' => ''
);
//Имя таблицы, в которой хранятся заметки
$table_name = 'articles';
//Подключаем класс для работы с базой данных
require "db.class.php";
// Соединение с базой данных
DB::init($dbOptions);
$page_id = (!empty($_GET['id']))? intval($_GET['id']): false;
if(!$page_id){
 
    //Выбираем 3 заметки из базы данных
    $result = DB::query('SELECT * FROM '.$table_name.' LIMIT 3');
 
    //Здесь будет храниться список заметок
    $articles = array();
 
    while($row = $result->fetch_assoc()){
        $articles[] = $row;
    }
}
else{
    //Выбираем заметку из базы данных по переданному id
    $result = DB::query('SELECT * FROM '.$table_name.' WHERE id='.$page_id.' LIMIT 1');
 
    //Если такой заметки нет в базе данных
    //выводим 404 ошибку
    if(!$post = $result->fetch_assoc()){
     
        header("HTTP/1.0 404 Not Found");
        header("HTTP/1.1 404 Not Found");
        header("Status: 404 Not Found");
        die('Нет такой заметки');
     
    }
}
?>

Комментариев нет:

Отправить комментарий

Постоянные читатели

Популярные сообщения