PHP * семейство функций mysql_
принимает необязательный аргумент link
, где вы указываете, какая ссылка будет использоваться для данной функции. Проверьте документы здесь для mysql_error
(как пример): http://www.php.net/manual/en/function.mysql-error.php
Проблема в том, что многие новые разработчики, которые вызывают mysql_connect
непосредственно в своем коде, вместо того, чтобы использовать класс оберточной базы данных (или, что еще лучше, PDO ), будут склонны не предоставлять этот необязательный аргумент. Если вы не укажете аргумент link
, функция будет предполагать, что вы хотите использовать ссылку, которая была создана последним - в данном случае, вашу ссылку.
Вы можете исправить это упущение в своей собственной функции:
public function connect() {
$link = mysql_connect('localhost', 'user', 'pwd');
if (!$link) {
die('Could not connect: ' . mysql_error($link));
}
mysql_select_db('database', $link);
return $link;
}
.. но это не поможет остальной части проекта, где разработчики, вероятно, звонят по номеру mysql_query
повсеместно, не передавая ссылку, поэтому по умолчанию будет использоваться ваша новая ссылка. Лучший способ обойти это без необходимости исправления всего остального кода - использовать PDO для доступа к дополнительной базе данных.
Еще одна вещь, которая может повлиять на код, даже если другие разработчики передают аргумент link
, это то, что вы не используете аргумент new_link
при вызове mysql_connect
. Вы в основном "крадете" их ссылку! Если они старались всегда использовать аргумент link
для mysql_query
, вы можете использовать аргумент new_link
, чтобы убедиться, что вы не взломали соединение с базой данных:
public function connect() {
$link = mysql_connect('localhost', 'user', 'pwd', true);
if (!$link) {
die('Could not connect: ' . mysql_error($link));
}
mysql_select_db('database', $link);
return $link;
}