Предупреждение: mysql_xx
функции удержаны от использования начиная с php 5.5 и удалены начиная с php 7.0 (см. http://php.net/manual/intro.mysql.php ), используйте mysqli_xx
функции или см. ответ ниже с <часа> @Troelskn
, можно выполнить множественные вызовы к mysql_connect()
, но если параметры являются тем же, необходимо передать верный для' $new_link
' (четвертый) параметр, иначе то же соединение снова используется. Например:
$dbh1 = mysql_connect($hostname, $username, $password);
$dbh2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);
Затем для запросов базы данных 1 передают первый идентификатор канала:
mysql_query('select * from tablename', $dbh1);
и для базы данных 2 передают второе:
mysql_query('select * from tablename', $dbh2);
, Если Вы не передаете идентификатор канала тогда, последнее созданное соединение используется (в этом случае то, представленное $dbh2
), например:
mysql_query('select * from tablename');
Другие опции
, Если у пользователя MySQL есть доступ к обеим базам данных и они находятся на том же хосте (т.е. оба DBS доступны от того же соединения), Вы могли:
mysql_select_db()
для свопинга между по мере необходимости. Я не уверен, что это - чистое решение, и Вы могли закончить тем, что запросили неправильную базу данных. SELECT * FROM database2.tablename
). Это, вероятно, будет болью для реализации. Также ответ troelskn's чтения, потому что это - лучший подход, если Вы в состоянии использовать PDO, а не более старые расширения.
Если Вы используете PHP5 (И Вы должны, учитывая, что PHP4 был удержан от использования), необходимо использовать PDO, так как это медленно становится новым стандартом. Одно (очень) важное преимущество PDO, то, что это поддерживает связанные параметры, который делает для намного большего количества безопасного кода.
Вы соединились бы через PDO, как это:
try {
$db = new PDO('mysql:dbname=databasename;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
echo 'Connection failed: ' . $ex->getMessage();
}
(Конечно, заменяют databasename, имя пользователя и пароль выше)
можно тогда запросить базу данных как это:
$result = $db->query("select * from tablename");
foreach ($result as $row) {
echo $row['foo'] . "\n";
}
Или, если у Вас есть переменные:
$stmt = $db->prepare("select * from tablename where id = :id");
$stmt->execute(array(':id' => 42));
$row = $stmt->fetch();
при необходимости в многочисленных связях, открытых сразу можно просто создать несколько экземпляров PDO:
try {
$db1 = new PDO('mysql:dbname=databas1;host=127.0.0.1', 'username', 'password');
$db2 = new PDO('mysql:dbname=databas2;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
echo 'Connection failed: ' . $ex->getMessage();
}