日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

php网页连mysql_php - 如何在单个网页上连接多个MySQL数据库?

發(fā)布時(shí)間:2023/12/4 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php网页连mysql_php - 如何在单个网页上连接多个MySQL数据库? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

php - 如何在單個(gè)網(wǎng)頁(yè)上連接多個(gè)MySQL數(shù)據(jù)庫(kù)?

我將信息分散在幾個(gè)數(shù)據(jù)庫(kù)中,并希望使用PHP將所有信息放到一個(gè)網(wǎng)頁(yè)上。 我想知道如何連接到單個(gè)PHP網(wǎng)頁(yè)上的多個(gè)數(shù)據(jù)庫(kù)。

我知道如何使用以下方法連接到單個(gè)數(shù)據(jù)庫(kù):

$dbh = mysql_connect($hostname, $username, $password)

or die("Unable to connect to MySQL");

但是,我可以使用多個(gè)“mysql_connect”命令來(lái)打開其他數(shù)據(jù)庫(kù),如果我連接了多個(gè)數(shù)據(jù)庫(kù),那么PHP如何知道我希望從中獲取信息的數(shù)據(jù)庫(kù)。

JoshFinnie asked 2019-04-09T05:23:13Z

11個(gè)解決方案

320 votes

您可以多次調(diào)用SELECT * FROM database2.tablename,但如果參數(shù)相同,則需要為'$new_link'(第四個(gè))參數(shù)傳遞true,否則將重用相同的連接。 例如:

$dbh1 = mysql_connect($hostname, $username, $password);

$dbh2 = mysql_connect($hostname, $username, $password, true);

mysql_select_db('database1', $dbh1);

mysql_select_db('database2', $dbh2);

然后查詢數(shù)據(jù)庫(kù)1傳遞第一個(gè)鏈接標(biāo)識(shí)符:

mysql_query('select * from tablename', $dbh1);

對(duì)于數(shù)據(jù)庫(kù)2傳遞第二個(gè):

mysql_query('select * from tablename', $dbh2);

如果您沒(méi)有傳遞鏈接標(biāo)識(shí)符,則使用最后創(chuàng)建的連接(在本例中為SELECT * FROM database2.tablename表示的連接),例如:

mysql_query('select * from tablename');

其他選擇

如果MySQL用戶可以訪問(wèn)兩個(gè)數(shù)據(jù)庫(kù)并且它們位于同一主機(jī)上(即兩個(gè)數(shù)據(jù)庫(kù)都可以從同一個(gè)連接訪問(wèn)),您可以:

保持一個(gè)連接打開,并根據(jù)需要調(diào)用SELECT * FROM database2.tablename進(jìn)行交換。 我不確定這是一個(gè)干凈的解決方案,你最終可能會(huì)查詢錯(cuò)誤的數(shù)據(jù)庫(kù)。

在查詢中引用表時(shí)指定數(shù)據(jù)庫(kù)名稱(例如SELECT * FROM database2.tablename)。 實(shí)施這可能是一種痛苦。

另請(qǐng)閱讀troelskn的答案,因?yàn)槿绻軌蚴褂肞DO而不是舊的擴(kuò)展,這是一種更好的方法。

Tom Haigh answered 2019-04-09T05:24:17Z

92 votes

如果您使用PHP5(并且您應(yīng)該,因?yàn)镻HP4已被棄用),您應(yīng)該使用PDO,因?yàn)檫@正逐漸成為新標(biāo)準(zhǔn)。 PDO的一個(gè)(非常)重要的好處是它支持綁定參數(shù),這使得代碼更加安全。

您將通過(guò)PDO連接,如下所示:

try {

$db = new PDO('mysql:dbname=databasename;host=127.0.0.1', 'username', 'password');

} catch (PDOException $ex) {

echo 'Connection failed: ' . $ex->getMessage();

}

(當(dāng)然替換上面的databasename,用戶名和密碼)

然后,您可以像這樣查詢數(shù)據(jù)庫(kù):

$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();

如果您需要一次打開多個(gè)連接,您只需創(chuàng)建多個(gè)PDO實(shí)例:

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();

}

troelskn answered 2019-04-09T05:25:45Z

8 votes

我讓我的生活變得簡(jiǎn)單:

CREATE VIEW another_table AS SELECT * FROM another_database.another_table;

希望它有用...歡呼......

Ihsan Kusasi answered 2019-04-09T05:26:25Z

6 votes

而不是mysql_connect使用mysqli_connect。

mysqli提供了一次連接多個(gè)數(shù)據(jù)庫(kù)的功能。

$Db1 = new mysqli($hostname,$username,$password,$db_name1);

// this is connection 1 for DB 1

$Db2 = new mysqli($hostname,$username,$password,$db_name2);

// this is connection 2 for DB 2

kaushik answered 2019-04-09T05:27:01Z

4 votes

試試以下代碼:

$conn = mysql_connect("hostname","username","password");

mysql_select_db("db1",$conn);

mysql_select_db("db2",$conn);

$query1 = "SELECT * FROM db1.table";

$query2 = "SELECT * FROM db2.table";

您可以從兩個(gè)數(shù)據(jù)庫(kù)中獲取上述查詢的數(shù)據(jù),如下所示

$rs = mysql_query($query1);

while($row = mysql_fetch_assoc($rs)) {

$data1[] = $row;

}

$rs = mysql_query($query2);

while($row = mysql_fetch_assoc($rs)) {

$data2[] = $row;

}

print_r($data1);

print_r($data2);

Paks answered 2019-04-09T05:27:34Z

3 votes

除非您確實(shí)需要使用多個(gè)PDO對(duì)象實(shí)例,否則請(qǐng)考慮以下事項(xiàng):

$con = new PDO('mysql:host=localhost', $username, $password,

array(PDO::ATTR_PERSISTENT => true));

請(qǐng)注意構(gòu)造參數(shù)中缺少USE dbname。

當(dāng)您通過(guò)終端或其他工具連接到MySQL時(shí),不需要數(shù)據(jù)庫(kù)名稱。 您可以通過(guò)PDO::exec()方法使用USE dbname語(yǔ)句在數(shù)據(jù)庫(kù)之間切換。

$con->exec("USE someDatabase");

$con->exec("USE anotherDatabase");

當(dāng)然,您可能希望將其包裝在catch try語(yǔ)句中。

Michael Ratcliffe answered 2019-04-09T05:28:37Z

2 votes

您可以使用MySQLi語(yǔ)法,這樣可以更好地處理它。

定義數(shù)據(jù)庫(kù)連接,然后每當(dāng)要查詢其中一個(gè)數(shù)據(jù)庫(kù)時(shí),請(qǐng)指定正確的連接。

例如。:

$Db1 = new mysqli('$DB_HOST','USERNAME','PASSWORD'); // 1st database connection

$Db2 = new mysqli('$DB_HOST','USERNAME','PASSWORD'); // 2nd database connection

然后在同一頁(yè)面上查詢它們,使用類似于:

$query = $Db1->query("select * from tablename")

$query2 = $Db2->query("select * from tablename")

die("$Db1->error");

以這種方式更改為MySQLi將對(duì)您有所幫助。

user3857891 answered 2019-04-09T05:29:44Z

2 votes

$dbh1 = mysql_connect($hostname, $username, $password);

$dbh2 = mysql_connect($hostname, $username, $password, true);

mysql_select_db('database1', $dbh1);

mysql_select_db('database2',$dbh2);

mysql_query('select * from tablename', $dbh1);

mysql_query('select * from tablename', $dbh2);

這是我使用的最明顯的解決方案,但請(qǐng)記住,如果數(shù)據(jù)庫(kù)的用戶名/密碼在同一主機(jī)中完全相同,則此解決方案將始終使用第一個(gè)連接。 因此,不要混淆在這種情況下這不起作用。 您需要做的是,為2個(gè)數(shù)據(jù)庫(kù)創(chuàng)建2個(gè)不同的用戶,它將起作用。

Lazy Fellow answered 2019-04-09T05:30:14Z

2 votes

您實(shí)際上并不需要select_db.您可以同時(shí)向兩個(gè)數(shù)據(jù)庫(kù)發(fā)送查詢。 首先,授予DB1以從GRANT select ON DB2.* TO DB1@localhost;選擇DB2。然后,FLUSH PRIVILEGES;。最后,您可以進(jìn)行“多數(shù)據(jù)庫(kù)查詢”,如SELECT DB1.TABLE1.id, DB2.TABLE1.username FROM DB1,DB2等。(不要忘記您需要'root'訪問(wèn)權(quán)限才能使用grant 命令)

Nagibaba answered 2019-04-09T05:30:54Z

1 votes

如果你使用mysqli并有兩個(gè)db_connection文件。 喜歡第一個(gè)是

define('HOST','localhost');

define('USER','user');

define('PASS','passs');

define('**DB1**','database_name1');

$connMitra = new mysqli(HOST, USER, PASS, **DB1**);

第二個(gè)是

define('HOST','localhost');

define('USER','user');

define('PASS','passs');

define(**'DB2**','database_name1');

$connMitra = new mysqli(HOST, USER, PASS, **DB2**);

所以只需更改mysqli中的參數(shù)傳遞名稱,如DB1和DB2。? 如果你在mysqli中傳遞相同的參數(shù),假設(shè)兩個(gè)文件中的DB1,則第二個(gè)數(shù)據(jù)庫(kù)將不再連接。 所以請(qǐng)記住,在mysqli函數(shù)中使用兩個(gè)或多個(gè)連接傳遞不同的參數(shù)名稱時(shí)

lotus weaver answered 2019-04-09T05:31:41Z

-1 votes

我在laravel完成了這個(gè)

ini_set('max_execution_time', 3600);

$old_users = DB::connection('mysql2')->table('user_master')->get();

foreach ($old_users as $old_user) {

if ($old_user->usr_phone != "0") {

$password = base64_decode($old_user->usr_pwd);

$password = Hash::make($password);

if ($old_user->device_type == "1") {

$device_type = "ios";

} else if ($old_user->device_type == "2") {

$device_type = "android";

} else {

$device_type = "web";

}

$user = new User;

$user->name = $old_user->usr_name;

$user->email = $old_user->usr_email;

$user->points_exp_date = "2018-08-02"; try {

$user->save();

} catch (\Exception $e) {

echo ("");

}

Log::info('user saved');

}

}

這是我的示例代碼

Balaji Rajendran answered 2019-04-09T05:32:33Z

總結(jié)

以上是生活随笔為你收集整理的php网页连mysql_php - 如何在单个网页上连接多个MySQL数据库?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。