在php中,我可以在一个应用程序中使用多个数据库吗?
我正在开发与数据库操作相关的简单应用程序。在php中,我可以在一个应用程序中使用多个数据库吗?,php,mysql,Php,Mysql,我正在开发与数据库操作相关的简单应用程序。 我的疑问是我如何能同时连接到多个数据库 php如何知道数据将存储哪些数据库 如果用户输入要输入哪个数据库的数据,则输入两个数据库或一个数据库 请回答我的问题。我为这个问题苦苦挣扎。是的,你可以。。通过使用两个连接字符串 $mysqli1 = new mysqli('HOST1', 'USER1', 'PASSWORD1', 'DB_NAME1'); $mysqli2 = new mysqli('HOST2', 'USER2', 'PASSWOR
- 我的疑问是我如何能同时连接到多个数据库
- php如何知道数据将存储哪些数据库
- 如果用户输入要输入哪个数据库的数据,则输入两个数据库或一个数据库
请回答我的问题。我为这个问题苦苦挣扎。是的,你可以。。通过使用两个连接字符串
$mysqli1 = new mysqli('HOST1', 'USER1', 'PASSWORD1', 'DB_NAME1');
$mysqli2 = new mysqli('HOST2', 'USER2', 'PASSWORD2', 'DB_NAME2');
您的查询应该是
$result1 = $mysqli1->query('query ......');
及
是的,你可以,基本上,你可以这样做:
try {
$db = new PDO('mysql:dbname=databasename;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
echo 'Connection failed: ' . $ex->getMessage();
}
$result = $db->query("select * from tablename");
foreach ($result as $row) {
echo $row['foo'] . "\n";
}
要连接到同一服务器上的多个数据库,请执行以下操作:
$dblink1 = mysql_select_db('database_a', $conn);
$dblink2 = mysql_select_db('database_b', $conn);
要从两个数据库获取结果,请执行以下操作:
$resultsa = mysql_query('SELECT * FROM table_a', $dblink1) or die('Could not query database_a');
$resultsb = mysql_query('SELECT * FROM table_b', $dblink2) or die('Could not query database_b');
编辑-请记住,mysql_u函数在最近的PHP版本中不可用,因为它们已被删除
警告
从PHP5.5.0开始,此扩展已被弃用,并将在中删除
未来。相反,应该使用MySQLi或PDO_MySQL扩展。
有关更多信息,请参见MySQL:选择API指南和相关常见问题解答
信息
当然,如果需要,您可以在下面的示例中添加更多连接:
Class database
{
private oracleDatabase;
private mysqlDatabase;
public function connOracle() {
$db = "";
$user = "";
$password = "";
try {
$this->oracleDatabase = new PDO("oci:dbname=".$db,$user,$password);
} catch(PDOException $e){
echo "Can't connect to database (Oracle). ". $e->getMessage();
}
}
public function connMysql() {
$db = "";
$user = "";
$password = "";
try {
$this->mysqlDatabase = new PDO("mysql:dbname=".$db,$user,$password);
} catch(PDOException $e){
echo "Can't connect to database (Mysql). ". $e->getMessage();
}
}
}
如果同时在同一台服务器上使用两个数据库,请小心。默认情况下,mysql_connect使用相同的服务器参数为多个调用返回相同的连接ID,这意味着如果
<?php
$db1 = mysql_connect(...stuff...);
$db2 = mysql_connect(...stuff...);
mysql_select_db('db1', $db1);
mysql_select_db('db2', $db2);
?>
那么$db1实际上已经选择了数据库“db2”,因为对mysql\u connect的第二次调用刚刚返回了已经打开的连接ID!
这里有两个选项,即在每次查询之前必须调用mysql\u select\u db,或者如果使用php4.2+,则mysql\u connect中有一个参数用于强制创建新链接
请使用下面的链接参考您在此处提出的问题。
是的,您可以在一个应用程序中使用多个数据库,但最重要的是,当您与数据库名通信时,您必须指定该数据库名,以便脚本仅与您定义的数据库通信。前
$db1 = mysql_connect(...stuff...);
$db2 = mysql_connect(...stuff...);
mysql_select_db('db1', $db1);
mysql_select_db('db2', $db2);
$resultsa = mysql_query('SELECT * FROM table_a', $dbname) or die('Could not query database_a');
是,您可以连接多个数据库。
- 打开你的php.ini文件,告诉我你的数据库详细信息,如
- 端口号、用户名、密码
$db1 = mysql_connect($hostname, $username, $password);
$db2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $db1);
mysql_select_db('database2', $db2);
然后要查询数据库1,请执行以下操作:
mysql_query('select * from tablename', $dbh1);
mysql_query('select * from tablename', $dbh2);
对于数据库2:
mysql_query('select * from tablename', $dbh1);
mysql_query('select * from tablename', $dbh2);
我认为这对你的问题来说很好。如果你使用PHP5(鉴于PHP4已经被弃用,你应该这样做),你应该使用,因为这正在慢慢成为新的标准。PDO的一个(非常)重要的优点是它支持绑定参数,这使得代码更加安全
您可以通过PDO进行连接,如下所示:
try {
$db = new PDO('mysql:dbname=databasename;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
echo 'Connection failed: ' . $ex->getMessage();
}
$result = $db->query("select * from tablename");
foreach ($result as $row) {
echo $row['foo'] . "\n";
}
(当然要替换上面的数据库名、用户名和密码)
然后可以按如下方式查询数据库:
try {
$db = new PDO('mysql:dbname=databasename;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
echo 'Connection failed: ' . $ex->getMessage();
}
$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();
}
您可以编写查询以符合数据库名称(DB.Table)。通过这种方式,您可以使用单个连接在同一服务器上使用多个数据库。连接字符串中指定的数据库是默认数据库(您不需要使用DB.Table限定),我们的数据将存储在该数据库中。dab1或db2mysqli无疑是一种方式,特别是PHP宣布他们将弃用并删除mysql\ufunctions@JustinMitchell他们不会“反对”mysql扩展,他们已经做了,所以这在最新版本中是正确的,但是许多开发人员仍然在使用5.4和更早版本,所以推荐仍然是相关的。应该使用它吗?如果您想升级到最新的PHP版本,可能不会。