PHP - 连接到多个MySQL数据库

时间:2013-11-17 04:39:37

标签: php mysql database

所以我有一个首先连接到我的数据库的PHP页面,并使用那里的信息做了很多东西。现在我想连接到同一PHP页面中的另一个数据库并从那里访问数据并将信息插入到我的原始数据库中。

代码:

<?php

session_start();

include ("account.php");
include ("connect.php");

....
do stuff here
....

include ("account2.php");
include ("connect2.php");

...
$thing = "SELECT abc, efg, hij FROM table ORDER BY RAND() LIMIT 1" ;
$thing = mysql_query($thing);
echo "$thing";
....

....
insert information into my database
(From account.php & connect.php files)
....

?>

除了$ thing之外,所有东西都出现了。它说,“查询无效:查询为空”但我知道我使用的查询有效,因为当我在account2数据库中运行它时,我得到了我想要的结果。我的逻辑有问题还是其他的东西?

4 个答案:

答案 0 :(得分:0)

执行查询时,您没有提及数据库连接链接。可能是您的第二个数据库连接是在connection.php文件中的第一个之后定义的。因此解释器在执行查询时正在考虑第二个连接。

使用查询

定义连接链接
$thing = mysql_query($thing,$conn); //$conn is your mysql_connect

您仍然可以使用mysql_connect或类似的mysql_函数(程序方式)但现在所有这些都已被弃用。你应该使用mysqli_(mysql改进的)函数或者采用面向对象的方式。

$conn1 = new mysqli(SERVER1,DB_USER1,DB_PASS1,DB1);
$conn2 = new mysqli(SERVER2,DB_USER2,DB_PASS2,DB2);

if($conn1 ->connect_errno > 0 || $conn2 ->connect_errno > 0){
    die('Unable to connect to database server.');
}

现在执行查询时,

$query = "SELECT abc, efg, hij FROM table ORDER BY RAND() LIMIT 1";
$thing = $conn1 -> query($query); //if it's second connection query user $conn2

答案 1 :(得分:0)

许多Web应用程序可以从与数据库服务器的持久连接中受益。持久连接不会在脚本末尾关闭,而是在另一个脚本使用相同凭据请求连接时进行高速缓存和重新使用。持久连接缓存允许您避免每次脚本需要与数据库通信时建立新连接的开销,从而使Web应用程序更快。

对于你的情况,我会建立2个持久连接,将每个连接存储在它自己的变量中,然后在需要时使用一个。使用PDO类检查它。

//Connection 1
$dbh1 = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));

.
.
.

//Connection 2
$dbh2 = new PDO('mysql:host=localhost;dbname=test2', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));

答案 2 :(得分:0)

完成第一次数据库操作后,您可以使用

关闭连接
mysql_close($c) //$c = connection

再次开始下一次数据库操作。

答案 3 :(得分:0)

private static function _connectDB1()
{
//give hostname, dbusername, dbpassword
$con1 = mysql_connect("localhost", "root", "rootpass");
$db1 = mysql_select_db("dbone", $con1);
}
private static function _connectDB2()
{
//if you are using different db with different credentials
//you can give here like this
// mysql_connect("mynewhost", "mynewusername", "mynewpassword")
$con2 = mysql_connect("localhost", "root", "rootpass");
$db2 = mysql_select_db("dbtwo", $con2);
}