возник такой вопрос, у меня есть вот такой класс
<?php
class db {
protected $connection;
protected $query;
public $query_count = 0;
public function __construct($dbhost = 'localhost', $dbuser = 'root', $dbpass = '', $dbname = '', $charset = 'utf8') {
$this->connection = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($this->connection->connect_error) {
die('Failed to connect to MySQL - ' . $this->connection->connect_error);
}
$this->connection->set_charset($charset);
}
public function query($query) {
if ($this->query = $this->connection->prepare($query)) {
if (func_num_args() > 1) {
$x = func_get_args();
$args = array_slice($x, 1);
$types = '';
$args_ref = array();
foreach ($args as $k => &$arg) {
if (is_array($args[$k])) {
foreach ($args[$k] as $j => &$a) {
$types .= $this->_gettype($args[$k][$j]);
$args_ref[] = &$a;
}
} else {
$types .= $this->_gettype($args[$k]);
$args_ref[] = &$arg;
}
}
array_unshift($args_ref, $types);
call_user_func_array(array($this->query, 'bind_param'), $args_ref);
}
$this->query->execute();
if ($this->query->errno) {
die('Unable to process MySQL query (check your params) - ' . $this->query->error);
}
$this->query_count++;
} else {
die('Unable to prepare statement (check your syntax) - ' . $this->query->error);
}
return $this;
}
public function fetchAll() {
$params = array();
$meta = $this->query->result_metadata();
while ($field = $meta->fetch_field()) {
$params[] = &$row[$field->name];
}
call_user_func_array(array($this->query, 'bind_result'), $params);
$result = array();
while ($this->query->fetch()) {
$r = array();
foreach ($row as $key => $val) {
$r[$key] = $val;
}
$result[] = $r;
}
$this->query->close();
return $result;
}
public function fetchArray() {
$params = array();
$meta = $this->query->result_metadata();
while ($field = $meta->fetch_field()) {
$params[] = &$row[$field->name];
}
call_user_func_array(array($this->query, 'bind_result'), $params);
$result = array();
while ($this->query->fetch()) {
foreach ($row as $key => $val) {
$result[$key] = $val;
}
}
$this->query->close();
return $result;
}
public function numRows() {
$this->query->store_result();
return $this->query->num_rows;
}
public function close() {
return $this->connection->close();
}
public function affectedRows() {
return $this->query->affected_rows;
}
private function _gettype($var) {
if(is_string($var)) return 's';
if(is_float($var)) return 'd';
if(is_int($var)) return 'i';
return 'b';
}
}
?>
Он находится в db.php Сейчас я создаю новый класс в controller.php. Как использовать подключение к бд в моем новом классе для работы с бд в методах?
Через конструктор
public function __construct($db) {
$this->db = $db;
}
Самое главное - не создавать новое подключение каждый раз. Поскольку это попросту убьет сервер БД. Каждый РНР скрипт должен подключаться к одной и той де БД ровно 1 раз.
Для более продвинутых практик можно почитать вот этот ответ: Как правильно подключиться к базе данных в шаблоне MVC
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Где можно брать задачи (задания) для получения опыта? Допустим, для того же phpНу и не только
я через api получаю json который декодирую в массив, этот массив содержит дерево категорий в формате nested set перед тем как записать в базу нужно...
Есть ассоциативный массив нужно выбрать конкретные значения по совпадению и хотелось бы сделать все это без цикла, так как массивы могут...