Loading...
Как правильно сделать клас для бд?
Вернее правильное подключение?)
Юзаю mysqli.
<?php
class db {
protected $db;
public function __construct() {
$con=[
'host'=>'locahost',
'user'=>'sql123',
'pass'=>'da123da',
'base'=>'sql123',
];
$this->db=new mysqli($con['host'],$con['user'],$con['pass'],$con['base']);
if(!$this->db) echo('Ошибка');
}
}
$mysqli=new db;
?>

Это не работает, уже как мог крутил))
________
посл. ред. 23.06.2018 в 16:24; всего 1 раз(а); by Body Green
Body Green , <?php

define('DB_HOST', 'localhost');
define('DB_NAME', 'rohonline');
define('DB_USER', 'root');
define('DB_PASS', '');

class DB {
private static $instance = null;
private function __construct() {}
private function __clone() {}
private $last_query;
public static function instance()
{
if (self::$instance === null)
self::$instance = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
return self::$instance;
}

public static function run($sql)
{
$this->last_query = self::instance()->query($sql);
return $this->last_query;
}

public static function assoc()
{
return $this->last_query->fetch_assoc();
}

public function __destruct() {
$mysqli->close();
}
}
?>
Пост 2 описал как пример (писал на быструю руку, так что проверь)
пример кода
mysqli_fetch_assoc(mysql_query($sql)) -> DB::run($sql)->assoc();
null (23.06.2018 в 16:56)
Body Green , <?php

define('DB_HOST', 'localhost');
define('DB_NAME', 'rohonline');
define('DB_USER', 'root');
define('DB_PASS', '');

class DB {
private static $instance = null;
private function __construct() {}
private function __clone() {}
private $last_query;
public static function instance()
{
if (self::$instance === null)
self::$instance = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
return self::$instance;
}

public static function run($sql)
{
$this->last_query = self::instance()->query($sql);
return $this->last_query;
}

public static function assoc()
{
return $this->last_query->fetch_assoc();
}

public function __destruct() {
$mysqli->close();
}
}
?>


Епта, млять ты убить меня решил .ыы.
Так теперь что такое "self"?
Body Green , это не самый лучший вариант, но один с тех которые используют =)
А так я мог ошибиться в коде так что просмотри.
null (23.06.2018 в 16:59)
Body Green , это не самый лучший вариант, но один с тех которые используют =)
А так я мог ошибиться в коде так что просмотри.

Ладно, еще куча головной боли :-D
Будет чем заняться.
Спасибо.
Body Green (23.06.2018 в 16:59)
Так теперь что такое "self"?

<?php

define('DB_HOST', 'localhost');
define('DB_NAME', 'rohonline');
define('DB_USER', 'root');
define('DB_PASS', '');

class DB {
private static $instance = null;
private function __construct() {}
private function __clone() {}
private $last_query;
public static function instance()
{
if (self::$instance === null)
self::$instance = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
return self::$instance;
}

public static function run($sql)
{
$this->last_query = self::instance()->query($sql);
return $this->last_query;
}

/* mysqli_fetch_assoc() */
public function assoc()
{
return $this->last_query->fetch_assoc();
}

/* mysqli_result::$num_rows */
public function num_rows()
{
return $this->last_query->num_rows;
}

/* Insert Id */
public function insert_id()
{
return self::$instance->insert_id;
}

public function __destruct() {
$mysqli->close();
}
}
?>

self::$arg / self::func() - обращение к статическим переменным и функциям внутри класса
$this->arg / $this->func() - обращение к локальным переменным и функциям класса

В класс добавил еще параметров что бы ты мог понять,
обращение к любому идет как
DB::run($sql)->assoc();
DB::run($sql)->num_rows();
DB::run($sql)->insert_id();
________
посл. ред. 23.06.2018 в 17:05; всего 1 раз(а); by null
null , о это хорошо)
А зачем статические э-ты?
Почему не просто public)?
Body Green , экземпляр класса подключения к бд - статический, упор сделан на Singleton ты можешь шаманить как хочешь, я лишь навел пример
Онлайн: 2
Время:
Gen. 0.1124
(c) Bym.Guru 2010-2026