我有分散在几个数据库的信息,想把所有的信息放在一个网页上使用PHP.我想知道如何在一个PHP网页上连接到多个数据库.

我知道如何使用以下方式连接到单个数据库:

$dbh = mysql_connect($hostname, $username, $password) 
        or die("Unable to connect to MySQL");

然而,我可以只使用多个"mysql_connect"命令来打开其他数据库吗?如果我连接了多个数据库,PHP如何知道我想要从哪个数据库中提取信息.

推荐答案

Warning : mysql_xx个函数在PHP5.5之后被弃用,在PHP7.0之后被删除(见http://php.net/manual/intro.mysql.php),使用mysqli_xx个函数或从@Troelskn中查看下面的答案


您可以对mysql_connect()进行多次调用,但如果参数相同,则需要为‘$new_link’(第四个)参数传递true,否则将重用相同的连接.例如:

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

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

然后,要查询数据库1,请传递第一个链接标识符:

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

对于数据库2,请通过第二步:

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

如果未传递链接标识符,则使用创建的最后一个连接(在本例中为$dbh2表示的连接),例如:

mysql_query('select * from tablename');

Other options

如果MySQL用户可以访问这两个数据库,并且它们位于同一台主机上(即两个数据库都可以从同一个连接访问),那么您可以:

  • 保持一个连接打开,必要时拨打mysql_select_db()进行交换.我不确定这是一个干净的解决方案,你最终可能会查询错误的数据库.
  • 在查询中引用表时指定数据库名称(例如SELECT * FROM database2.tablename).这可能是一个难以实施的难题.

另外,请阅读Troleskn的答案,因为如果您能够使用PDO而不是旧的扩展,那么这是一种更好的方法.

Php相关问答推荐

相同的数组(一个来自func_get_args(),另一个显式构建)在用作参数时并不相同

使用额外的输入字段自定义WooCommerce单个产品

过滤WooCommerce管理员订单列表(+HPOS)中包含其作者产品的订单

在特定日期之间使用特定的元密钥销售产品

如果WooCommerce中存在特定的运输方式,则隐藏其他运输方式

致命错误:未捕获错误:Google\Auth\HttpHandler\HttpHandlerFactory::build()

如何修复条带元素中的错误&&客户端_机密&

在PHP中循环访问多维数组,并按组显示内容

PHP测试字符串的所有POST值

WooCommerce常规价格增加额外的附加平价

在WooCommerce中添加特定产品类型的百分比费用和固定费用

WooCommerce在购物车项目中复制产品而不增加产品数量

防止同时从Laravel中的用户帐户中提取

未定义的类型';PDF';在Laravel 8

如果 Select 的县不是store 所在的县,如何隐藏本地自提?

为什么 php 只能在我的 Nginx Web 服务器的某些目录中工作?

如何正确判断 PHP 是否已正确配置为使用 DOMDocument?

如何在WooCommerce中为访客购买者分配自定义客户代码

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

遇到特定键时修改二维数组以创建嵌套数据集