Reply to this topicStart new topicStart Poll

mysql_close() - где ошибка?

, все работает, кроме mysql_close()
DarlaXXL
Отправлено: Jan 28 2011, 11:42 AM
Quote Post


  Майор
*

Группа: Members
Сообщений: 107
Пользователь №: 3598
Регистрация:
12-November 10



Друзья,
код работет! НО!

сервер пишет вот такое
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in ....test.php on line 27

почему не могу закрыть соединение с базой?
я ошибки не вижу, можут вы поможете?

вот код
CODE
<?
$host="localhost";
$user="root";
$pass="test";
$database="blablabla";
$dp=mysql_connect($host, $user, $pass);
mysql_select_db($database, $dp);
?>


<?
$sql=mysql_query("SELECT id, text, name FROM base_test");
while ($dp=mysql_fetch_object($sql)){
$id=$dp->id;
$text=$dp->text;
$name=$dp->name;
echo $id, "<br>", $text, "<br>", $name;
}
mysql_close($dp);

?>
PMEmail Poster
Top
Матроскин
Отправлено: Jan 28 2011, 11:59 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



QUOTE
код работает!

Как он работает, если выводится ошибка? Если невозможно закрыть соединение с сервером - значит оно не было установлено и в $dp попало false, т.е., она, как и следует из текста предупреждения, не является ресурсом.
Правильно всегда проверять удалось ли установить соединение и, если не удалось, то прекратить выполнение программы и выдать соответствующее сообщение. Такой код проверьте, есть ли ошибка?
CODE
<?php
$host="localhost";
$user="root";
$pass="test";
$database="blablabla";
$dp=mysql_connect($host, $user, $pass) or die("Не удалось подключиться");
mysql_select_db($database, $dp);
?>


--------------------
PMEmail PosterUsers Website
Top
Матроскин
Отправлено: Jan 28 2011, 12:13 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Еще раз посмотрел код - все немного проще. После соединения с сервером в $dp содержится идентификатор соединения:
CODE
$dp=mysql_connect($host, $user, $pass);

А немного ниже значение $dp переназначено:
CODE
$dp=mysql_fetch_object($sql)

Соответственно, в переменной dp теперь уже нет идентификатора соединения, а потому закрыть соединение по этому идентификатору невозможно. Выход: либо не закрывать соединение - это не обязательно. Либо не использовать $dp, а использовать другую переменную при формировании массива объектов.


--------------------
PMEmail PosterUsers Website
Top
DarlaXXL
Отправлено: Jan 28 2011, 12:33 PM
Quote Post


  Майор
*

Группа: Members
Сообщений: 107
Пользователь №: 3598
Регистрация:
12-November 10



Код работает, как надо.
только в том месте, где идет close выдает ошибку строкой,
дальше идет нормальный вывод кода.
Спасибо за точку останова die! действительно пригодится.


PMEmail Poster
Top
DarlaXXL
Отправлено: Jan 28 2011, 12:38 PM
Quote Post


  Майор
*

Группа: Members
Сообщений: 107
Пользователь №: 3598
Регистрация:
12-November 10



QUOTE (Матроскин @ Jan 28 2011, 12:13 PM)
А немного ниже значение $dp переназначено:
CODE
$dp=mysql_fetch_object($sql)


Супер, спасибо!
у меня была такая мысль, но я же блин пишу строго по учебнику!
и вообще, у Гизберта Дамашке столько описок!!!
а эта тема с $dp идет вообще через весь учебник....
вот я и подумала " ну нельзя же 150 рз описаться? biggrin.gif "


Вопрос напрашивается:
а закрывать соединение - вообще не обязательно?
а если я второй раз захочу в коде обратиться к базе уже с другими командами?
PMEmail Poster
Top
Матроскин
Отправлено: Jan 28 2011, 12:59 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Закрывать соединение не обязательно - оно закроется автоматически по завершении скрипта. После установления соединения с сервером MySQL можно обращаться к нему в рамках установленного соединение хоть 10 раз (но злоупотреблять не стоит) - можно выбирать другие БД, можно неоднократно делать запросы к различным таблицам БД и т.д.
Закрывать соединение имеет смысл только для высоконагружаемых проектов, где оптимизация работы скриптов очень важна.


--------------------
PMEmail PosterUsers Website
Top
DarlaXXL
  Отправлено: Jan 28 2011, 03:37 PM
Quote Post


  Майор
*

Группа: Members
Сообщений: 107
Пользователь №: 3598
Регистрация:
12-November 10



До высоконагруженного сайта мне надо еще Phpmyadmin в денвее настроитьsmile.gif)) так что мне пока хватит открытого соединения.
Спасибо вэри биг!

PMEmail Poster
Top
Матроскин
Отправлено: Jan 28 2011, 04:23 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Усегда велкам wink.gif


--------------------
PMEmail PosterUsers Website
Top
ruitrjiu
Отправлено: Dec 7 2013, 02:12 PM
Quote Post


  Unregistered









Prime Over the design party dealt with the surrounding<br><br>belonging to the main all the way down. You start with lighting effects, these hand picked the Fillista necklace light fixture Canada Goose coming from IKEA $29. 99, moved through some other mid-century contemporary typical the very Henningsen Artichoke light with regard to Poulsen Celine handbags. The reason for writing this is to upgrade and relax finally, the middle century seem and create that desirable. Your place is known for a well-known the kitchen area and that we planned to Canada Goose Coat continue a few of which will becoming with the place. And there's an easy nipper from the spouse and children so we wanted to maintain it enjoyment, mentioned Turner.<br>
The main nook proper high roof
The nook size substantial threshold
The very appears to be deliberated higher threshold xxxxxx
Top
ruitrjiu
Отправлено: Dec 12 2013, 11:00 AM
Quote Post


  Unregistered









Which requires these people confirmed young children via several<br><br>ages video about equal sexual adults proposing to one another and additionally gauging the main doubts as well as tendencies from the little one audiences. Canada Goose Parka It can be was initially helpful to watch after all of our upcoming years creating senior along with fresh new opinions Cheap Canada Goose, something a person would scarcely come across within the ideas sections of most of these content. However Canada Goose Coats some results and additionally things exalted from Benny together with Rafi Good previously had us imagining<br>
It can possibly in which the stunt failed to distress lots of
broadcast the total frank stunt now
You think that will Miley's EMAs oooooo
Top

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0369 ]   [ 10 queries used ]   [ GZIP выключен ]