class DB{
protected static $mysqli;
public static $errors = array();
@params @params @params @params @params @return
public function connect($host, $usr, $pass, $db, $charset = 'utf8'){
$mysqli = new mysqli($host, $usr, $pass, $db);
if ($mysqli->connect_error){
self::$errors[] = $mysqli->connect_error;
return false;
}
else{
$mysqli->set_charset($charset);
self::$mysqli = $mysqli;
return $mysqli;
}
}
@param
public static function escape($data){
return self::$mysqli->real_escape_string($data);
}
@param @return
public static function query($sql){
$res = self::$mysqli->query($sql);
if(!$res){
self::$errors[] = self::$mysqli->error;
return false;
}
}
@param @param @return
public function ReturnData($sql, $type='assoc'){
$query = self::$mysqli->query($sql);
if(!$query){
self::$errors[] = self::$mysqli->error;
return false;
}
else{
switch($type){
case 'assoc' : $res = $query->fetch_all(MYSQLI_ASSOC); break;
case 'num' : $res = $query->fetch_all(MYSQLI_NUM); break;
case 'both' : $res = $query->fetch_all(MYSQLI_BOTH); break;
default : $res = $query->fetch_all(MYSQLI_ASSOC); break;
}
return $res;
}
}
@param @param @return
public function ReturnObjects($sql, $className='stdClass'){
$query = self::$mysqli->query($sql);
if(!$query){
self::$errors[] = self::$mysqli->error;
return false;
}
else{
$result = array();
while($row = $query->fetch_object()){
$result[] = $row;
}
return $result;
}
}
@param @return
public static function multyQuery($sql){
$query = self::$mysqli->multi_query($sql);
if(!$query){
self::$errors[] = self::$mysqli->error;
return false;
}
else{
$result = $query;
$query->free_result();
return $result;
}
}
@return
public function lastInsertId(){
return self::$mysqli->lastInsertId();
}
}
как использовать
define('DEBUG', true);
define('CRASHTEXT', 'Сайт временно недоступен!');
$conn = DB::connect('localhost', 'root', '672848', 'belle');
if(!$conn){
if(DEDUG){
foreach(DB::$errors as $k=>$e){
echo $e.'<br/>';
}
}
else{
exit(CRASHTEXT);
}
}
$res = DB::ReturnData('select * from users_belle', 'assoc');
echo '<pre>' . print_r($res, 1) . '</pre>';
$res = DB::ReturnData("select * from users_belle where uname='".DB::escape($_GET['name'])."'", 'assoc');
echo '<pre>' . print_r($res, 1) . '</pre>';
$res = DB::ReturnObjects('select * from users_belle');
echo '<pre>' . print_r($res, 1) . '</pre>';
$result = DB::query("insert into table (name) values ('".DB::escape($name)."')");
if($result != false){
}
Вообще, изначально обертка подразумевала упрощённый доступ к mysql_real_escape_string() - методом DB::escape()
всё остальное возможно разместить и в базовой модели, как общие методы для всех дочерних моделей
но для тебя - запихал всё сюда.
в классе использованы более-менее распространённые методы для работы с БД - всё остальное можно допихивать по настроению.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker