【问题标题】:How to use multiple database using php?如何使用 php 使用多个数据库?
【发布时间】:2011-05-08 20:36:37
【问题描述】:

我在互联网上阅读了多个问题,包括stackoverflow question,但没有一个对我有用。这是我的代码:

<?php

$conn1 = mysql_connect("localhost","root","passw0rd") or die(mysql_error());
$conn2 = mysql_connect("localhost","root","passw0rd") or die(mysql_error());

mysql_select_db("asteriskcdrdb",$conn1);
mysql_select_db("pj8v2",$conn2);

$query = "SELECT * FROM cdr";
$result = mysql_query($query,$conn1);

var_dump($result);

$query2 = "SELECT * FROM tb_did_avalaible";
$result2 = mysql_query($query2,$conn2);

var_dump($result2);

?>

当我 var_dump 结果时,它返回 false。这里有什么问题?谢谢。

【问题讨论】:

  • 你试过用 echo mysql_error($conn1); 检查错误吗? ?
  • 你检查$conn1$conn2的值了吗?每次mysql 调用失败后,mysql_error 的输出是什么?
  • 感谢您的帮助。我只是找出问题所在。我的错误是没有早点意识到这一点。
  • 发布你更新的代码,我猜你只需要在第一个mysql_query之后mysql_select_db("pj8v2",$conn2);

标签: php mysql


【解决方案1】:

如果两个数据库都位于同一个 mysql-server 上并且您以唯一用户身份访问它们,则不需要两个连接。

您也不需要选择数据库。
指定表时只需使用数据库名称作为前缀:

<?php

mysql_connect("localhost","root","pass") or die(mysql_error());

$query = "SELECT * FROM asteriskcdrdb.cdr";
$result = mysql_query($query)or die(mysql_error());
var_dump($result);

$query2 = "SELECT * FROM pj8v2.tb_did_avalaible";
$result2 = mysql_query($query2)or die(mysql_error());
var_dump($result2);

?>

您代码中的真正问题是:只能有一个活动数据库,它应该以这种方式工作:

<?php

$conn1 = mysql_connect("localhost","root","passw0rd") or die(mysql_error());   
$conn2 = mysql_connect("localhost","root","passw0rd",true) or die(mysql_error());

mysql_select_db("asteriskcdrdb",$conn1);
$query = "SELECT * FROM cdr";
$result = mysql_query($query,$conn1);

var_dump($result);


mysql_select_db("pj8v2",$conn2);
$query2 = "SELECT * FROM tb_did_avalaible";
$result2 = mysql_query($query2,$conn2);

var_dump($result2);

?>

虽然不需要 2 个连接,但您可以选择使用相同连接的两个 DB。

【讨论】:

    【解决方案2】:

    抱歉,我只是找出问题所在。如果使用相同的连接参数,必须在连接参数中添加true

    $conn1 = mysql_connect("localhost","root","passw0rd") or die(mysql_error());
    $conn2 = mysql_connect("localhost","root","passw0rd",true) or die(mysql_error());
    

    【讨论】:

    • 我认为在您的情况下不需要打开 2 连接
    【解决方案3】:

    不要使用mysql连接器,使用mysqli。比mysql更安全。

    代码是。

    $conn1  = new mysqli("localhost","user","password","db1");
    $conn2  = new mysqli("localhost","user","password","db2");
    
    $query1 = "select * from table1";
    $query2 = "select * from table2";
    
    echo $query1 . "<br />";
    echo $query2 . "<br />";
    
    $rs1 = $conn1->query($query1);
    $rs2 = $conn2->query($query1);
    

    还要检查查询是否正确。大多数情况下,错误出现在查询中,而不是语法中。

    【讨论】:

    • 如果您要建议放弃一个连接选项以支持另一个,那么它确实应该是 PDO_MySql
    猜你喜欢
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2020-05-08
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多