Задать вопрос

Почему не закрывается соединение с БД MySQL (PHP)?

Есть класс, в конструкторе указано соединение с БД, в деструкторе - это соединение должно закрываться, но выдаёт ошибку
Warning: mysql_close(): 4 is not a valid MySQL-Link resource in C:\OSPanel\domains\tz\function.php on line 16
.
Вот код:
class Table {
	public $connection_db;

	public function __construct() {
		$this -> connection_db = mysql_connect("localhost", "root", "") or die (mysql_error());
		$db_select = mysql_select_db('main');
		mysql_set_charset('utf-8');
		if (!$this -> connection_db or !$db_select) {
			echo "no connect to database<br>";
	  	echo mysql_error();
		}
	}
	public function __destruct() {
		mysql_close($this -> connection_db);
	}
	//возвращает количество записей в таблице
	protected function nomber_table($table) {
		$query = mysql_query("SELECT COUNT(1) FROM $table");
		if ($query) {
			$arr = mysql_fetch_array($query);
			$nomber = $arr[0];
			return $nomber;
		}
		else {
			return 0;
		}
	}
	//возвращает количество страниц
	public function nomber_page($table) {
		return ceil($this -> nomber_table($table)/20);
	}
}


Сама суть тут:
public $connection_db;

	public function __construct() {
		$this -> connection_db = mysql_connect("localhost", "root", "") or die (mysql_error());
		$db_select = mysql_select_db('main');
		mysql_set_charset('utf-8');
		if (!$this -> connection_db or !$db_select) {
			echo "no connect to database<br>";
	  	echo mysql_error();
		}
	}
	public function __destruct() {
		mysql_close($this -> connection_db);
	}

Заранее спасибо за помощь!
  • Вопрос задан
  • 431 просмотр
Подписаться 1 Средний 1 комментарий
Решения вопроса 2
DevMan
@DevMan
на что только люди не пойдут лишь бы не использовать pdo.
ничо, что функции mysql_* уже давно в диприкейте или вообще выпилены из пыха?

по сабжу: в подавляющем большинстве случаев в mysql_close можно вообще не указывать линк.
Ответ написан
@AlexanderKomarchouk
программист PHP, embedded atmega/stm32
Вам правильно пишут про устаревшие функции mysql_*
Если вам хочется обойтись малой кровью, ну используйте тогда mysqli
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nozzy
Symfony, Laravel, SQL, Python, Telegram
Посмотри, что у тебя в connection_db:
public function __destruct() {
    die(var_dump($this -> connection_db));
    mysql_close($this -> connection_db);
  }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы