Peringatan: mysql_xx
fungsi sudah tidak digunakan lagi sejak php 5.5 dan dihapus sejak php 7.0 (lihat http://php.net/manual/intro.mysql.php ), gunakan mysqli_xx
fungsi atau lihat jawabannya di bawah dari @Troelskn
Anda dapat membuat beberapa panggilan mysql_connect()
, tetapi jika parameternya sama, Anda harus memberikan true untuk $new_link
parameter ' ' (keempat), jika tidak, koneksi yang sama digunakan kembali. Sebagai contoh:
$dbh1 = mysql_connect($hostname, $username, $password);
$dbh2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);
Kemudian untuk query database 1, lewati pengenal tautan pertama:
mysql_query('select * from tablename', $dbh1);
dan untuk database 2 lewati yang kedua:
mysql_query('select * from tablename', $dbh2);
Jika Anda tidak melewati pengenal tautan maka koneksi terakhir yang dibuat digunakan (dalam hal ini yang diwakili oleh $dbh2
) misalnya:
mysql_query('select * from tablename');
Pilihan lain
Jika pengguna MySQL memiliki akses ke kedua database dan mereka berada di host yang sama (yaitu kedua DB dapat diakses dari koneksi yang sama) Anda bisa:
- Biarkan satu koneksi terbuka dan panggil
mysql_select_db()
untuk bertukar di antara yang diperlukan. Saya tidak yakin ini adalah solusi bersih dan Anda akhirnya bisa menanyakan database yang salah.
- Tentukan nama database ketika Anda mereferensikan tabel dalam kueri Anda (mis
SELECT * FROM database2.tablename
.). Ini mungkin akan sulit untuk diterapkan.
Baca juga jawaban troelskn karena itu adalah pendekatan yang lebih baik jika Anda dapat menggunakan PDO daripada ekstensi yang lebih lama.
$dbh2
yang kedua hanya bila diperlukan? Harus mengubah semua pertanyaan untuk pendekatan ini untuk bekerja mungkin akan memakan waktu berhari-hari hanya dengan menemukan semuanya ...db_query($query,$db='db1')
dan kemudian perbarui secara massal semua pertanyaan lama Anda untukdb_query($query)
diikuti dengan kustom memperbarui non-default Anda kedb_query($query,'db2')
If the link identifier is not specified, the last link opened by mysql_connect() is assumed.
Jika Anda menggunakan PHP5 (Dan Anda harus, mengingat bahwa PHP4 telah ditinggalkan), Anda harus menggunakan PDO , karena ini perlahan-lahan menjadi standar baru. Satu (sangat) manfaat penting dari PDO, adalah mendukung parameter terikat, yang membuat kode jauh lebih aman.
Anda akan terhubung melalui PDO, seperti ini:
(Tentu saja ganti nama data, nama pengguna, dan kata sandi di atas)
Anda kemudian dapat meminta database seperti ini:
Atau, jika Anda memiliki variabel:
Jika Anda ingin beberapa koneksi terbuka sekaligus, Anda bisa membuat beberapa instance PDO:
sumber
use DATABASENAME
, tetapi saya tidak mengerti intinya?Saya hanya membuat hidup saya sederhana:
semoga bermanfaat ... tepuk tangan ...
sumber
Alih-alih mysql_connect gunakan mysqli_connect .
mysqli menyediakan fungsi untuk menghubungkan beberapa basis data sekaligus.
sumber
mysql_connect
Coba kode di bawah ini:
Anda dapat mengambil data dari kueri di atas dari kedua basis data seperti di bawah ini
sumber
mysql_select_db
sekali pun - juga, menyebutnya dua kali tanpa hal lain di tengah tidak bergunaIni adalah solusi yang paling jelas yang saya gunakan tetapi ingat, jika nama pengguna / kata sandi untuk kedua basis data persis sama di host yang sama, solusi ini akan selalu menggunakan koneksi pertama. Jadi jangan bingung bahwa ini tidak berfungsi dalam kasus seperti itu. Yang perlu Anda lakukan adalah, membuat 2 pengguna yang berbeda untuk 2 basis data dan itu akan berhasil.
sumber
Kecuali Anda benar-benar perlu memiliki lebih dari satu instance objek PDO dalam permainan, pertimbangkan hal berikut:
Perhatikan tidak adanya
dbname=
argumen konstruksi.Ketika Anda terhubung ke MySQL melalui terminal atau alat lain, nama database tidak diperlukan. Anda dapat beralih antar database dengan menggunakan
USE dbname
pernyataan melaluiPDO::exec()
metode.Tentu saja Anda mungkin ingin membungkus ini dalam pernyataan coba-coba.
sumber
Anda mungkin dapat menggunakan sintaksis MySQLi, yang akan memungkinkan Anda untuk menanganinya dengan lebih baik.
Tetapkan koneksi basis data, lalu kapan pun Anda ingin menanyakan salah satu basis data, tentukan koneksi yang tepat.
Misalnya:
Kemudian untuk menanyakannya di halaman yang sama, gunakan sesuatu seperti:
Mengubah ke MySQLi dengan cara ini akan membantu Anda.
sumber
Anda sebenarnya tidak perlu
select_db
. Anda dapat mengirim kueri ke dua database secara bersamaan. Pertama, memberikan hibah untukDB1
untuk memilih dariDB2
denganGRANT select ON DB2.* TO DB1@localhost;
. LaluFLUSH PRIVILEGES;
,. Terakhir, Anda dapat melakukan 'permintaan banyak-basis data' sepertiSELECT DB1.TABLE1.id, DB2.TABLE1.username FROM DB1,DB2
dll. (Jangan lupa bahwa Anda memerlukan akses 'rooting' untuk menggunakan perintah hibah)sumber
jika Anda menggunakan mysqli dan memiliki dua file db_connection. seperti yang pertama
yang kedua adalah
SO cukup ganti nama parameter pass di mysqli seperti DB1 dan DB2. jika Anda melewatkan parameter yang sama di mysqli misalkan DB1 di kedua file maka basis data kedua tidak akan terhubung lagi. Jadi ingat ketika Anda menggunakan dua koneksi atau lebih, lewati nama parameter yang berbeda di fungsi mysqli
sumber
sumber