Задать вопрос
YokiToki
@YokiToki
PHP-разработчик

Как грамотно закрыть MySQLi?

Приветствую, есть следующий код, если попытаться выполнить его в контроллере, создав экземпляр этого класса и последовательно вызвать get_one, а затем get_two, то get_two вернет ошибку т.к. mysql-соединение уже закрыто.
class Foo extends Bar
{
	function __construct()
	{

		parent::__construct();

		$this->mysqli = new mysqli($this->cfg->db->host, 
		                           $this->cfg->db->user, 
		                           $this->cfg->db->password, 
		                           $this->cfg->db->database);
		$this->mysqli->query('SET NAMES utf8');
		
	}

	public function get_one()
	{

		$table_one = array();

		$result = $this->mysqli->query('SELECT * FROM `table_one`');

		for ($i=0; $row = $result->fetch_assoc(); $i++) { 
			$table_one[] = $row;
		}

		$result->close();
		$this->mysqli->close();

		return $table_one;

	}


	public function get_two()
	{

		$table_two = array();

		$result = $this->mysqli->query('SELECT * FROM `table_two`');

		for ($i=0; $row = $result->fetch_assoc(); $i++) { 
			$table_two[] = $row;
		}

		$result->close();
		$this->mysqli->close();

		return $table_two;

	}

}

В голову приходит только такое
public function get_one($keep = false)
	{
		...
		if(!$keep)
			$this->mysqli->close();

		...
	}

Как можно более-менее универсально его закрывать?
  • Вопрос задан
  • 6319 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя FanatPHP К ответам на вопрос (4)
FanatPHP
@FanatPHP
Чебуратор тега РНР
Два обязательных правила, которые ты должен соблюдать
1. Не пиши классов.
2. Не закрывай mysqli
Ответ написан