Консультация № 137499
19.05.2008, 14:24
0.00 руб.
0 3 3
Здравствуйте, уважаемые эксперты!

У меня вопрос по функции mysql_query() В ее описании сказано, что если вторым аргументом не передавать линк на подключение к базе, то запускается функция mysql_connect с параметрами по умолчанию.

Сильно ли это дополнительно загружает сервер? И если загружает, то как решить вопрос с передачей линка на подключение в функции, использующие mysql_query? Просто передавать в виде параметра, или еще как-то?

Заранее спасибо

Обсуждение

Неизвестный
19.05.2008, 14:37
общий
это ответ
Здравствуйте, Anatole!

Дело в том, что обычно линк не указывается, если соединение с БД уже установлено. В этом случае соединение используется по умолчанию. А вот если ни одного установленного соединения не было найдено, производится попытка соединиться с БД. Значения параметров по умолчанию таковы:
server = ‘localhost:3306‘,
username = имя пользователя владельца процесса сервера
password = пустой пароль

Если соединение не установится, запрос не выполнится.
Как таковой проблемы с передачей линка нет:

// Подключаемся к БД:
$db = mysql_connect(SERVER, USER, PASSWORD);

// работаем с базой, оба способы рабочие:
mysql_query($query);
mysql_query($query, $db);

Т.е. мы можем опускать линк на связь с MySQL (переменная $db в нашем случае), т.к. система сама его будет использовать. Обычно линк используется, если существует несколько подключений к различным серверам MySQL (или к разным базам данных)
Неизвестный
19.05.2008, 14:50
общий
это ответ
Здравствуйте, Anatole!
Добавлю к ответу, что данные для подключения по умолчанию для функции mysql_connect () определены в файле php.ini, при чём в документации по PHP не рекомендовано их там устанавливать, более того на хостингах обычно не устанавливают параметры по умолчанию для этой функции(точнее оставляют пароль пустым, как было сказано), то есть лучше всего выполнять функции в нормальном порядке и со своими параметрами... (а нагрузка на сервер не меняется)
Неизвестный
19.05.2008, 16:07
общий
это ответ
<font color=blue><b>!!!</b></font>
Здравствуйте, Anatole!
В описании mysql_query(string query [,int link_identifier]) говорится:
------------------
Эта функция посылает запрос query базе данных, связанной с идентификатором link_identifier Если идентификатор не указан, то принимается во внимание последнее открытое соединение. Если до этого соединение небыло установлено, то выполняется операция mysql_connect() с параметрами по умолчанию.
------------------
Т.е. если при старте работы с базой использовалась mysql_connect(), то и не обязательно передавать второй параметр в mysql_query() - скрипт сам подхватит последнее соединение. Если соединение с базой не устанавливалось, то только тогда будет устанавливаться соединение с настройками по умолчанию.
<font color=blue><s>Дальше (по утверждению некоторых знакомых) по завершении запроса, соединение закрывается</s> <b><i>[ неверное утверждение ]</i></b></font>. Сам не проверял, так как верю в то, что нормальный админ "умолчательные" настройки подключения к базе сделает неработоспособными.

Линк на соединение с базой передавать в каждую функцию не надо, достаточно не забывать открывать соединение при старте скрипта. Ну и разумеется, закрывать по завершению работы :)<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:blue 1px solid; padding:10px;‘ class=fieldset><font color=blue><i>Соединение с БД закрывается функцией <b>mysql_close</b>; после выполнения запроса оно НЕ закрывается автоматически.</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=http://rusfaq.ru/info/user/18359 target=_blank>Николай Владимирович / Н.В.</a></b> (Профессор)
<b>• Дата редактирования:</b> 19.05.2008, 16:39</font></fieldset>
Форма ответа