Используя php i, я хочу сделать запрос соединения в 2 базы данных.
Это мое первое соединение.
$conn = mysql_connect('localhost','root1','pass1'); @mysql_select_db('database1',$conn);
Это мое второе соединение.
$conn1 = mysql_connect('localhost','root2','pass2'); @mysql_select_db('database2',$conn1);
Если я хочу получить данные из базы данных1, я делаю следующее.
$sql = 'SELECT * FROM users'; $result = mysql_query($sql, $conn); print_r(mysql_fetch_array($result));
Аналогично для второй базы данных2
$sql = 'SELECT * FROM orders'; $result = mysql_query($sql, $conn1); print_r(mysql_fetch_array($result));
Но я столкнулся с проблемой, когда я делаю запрос на соединение следующим образом
$sql = 'SELECT a.fname AS fname, a.lname AS lname FROM database1.users a JOIN database2.orders b ON b.creator_id = a.id'; $result = mysql_query($sql);//what should be second parameter over here. print_r(mysql_fetch_array($result));
Вы можете сделать это, указав имя таблицы и имя базы данных, как вы предложили в этом примере. Но зарегистрированный пользователь должен иметь доступ к обеим базам данных с одинаковыми учетными данными. Эта последняя часть очень важна, иначе вы не сможете это сделать.
Это дает вам простой, но простой пример: ссылка
Пример, взятый из этой ссылки (будет работать только с теми же учетными данными):
SELECT c.customer_name, o.order_date FROM db1.tbl_customers c LEFT JOIN db2.tbl_orders o ON o.customer_id = c.id
Модуль mysql в среде php не поддерживает несколько соединений с базой данных, и, кроме того, этот модуль существует только по причинам, связанным с ретросопротивлением. Вы не должны его использовать.
mysqli и PDO лучше, более полные (поддержка транзакции и подготовленного оператора, «mysql» – нет), а PDO поддерживает также многобайтовый запрос.
Старый mysql только процедурный, mysqli может использоваться в процедурных и OO-программировании, PDO – ООП.