0

我在不同的主机中有 2 个连接数据库(MySQL),如下所示:

//database 1
$dbhost='localhost';
$dbuser='user1'; 
$dbpass='pass1';
$dbname='dbname1';

//database 2
$dbhostams='192.168.16.3';
$dbuserams='user2';
$dbpassams='pass2';
$dbnameams='dbname2';  

function dbconnection($dbhost,$dbuser,$dbpass,$dbname){
    if(!mysql_connect($dbhost,$dbuser,$dbpass)){
        echo "Error occure on opening connection or database. Period.";
    }else{
        if(!mysql_select_db($dbname)){
            echo "Error occure on select databases !";
        }
    }
}
function dbconnectionams($dbhostams,$dbuserams,$dbpassams,$dbnameams){
    $cxn = mysql_connect($dbhostams,$dbuserams,$dbpassams,$dbnameams);
    if( $cxn === FALSE ) {  
        die('mysql connection error: '.mysql_error()); 
    }else{
        if( !mysql_select_db($dbnameams) ){
            echo "Error occure on select databases !";
        }
    }
}

当我使用:

dbconnection($dbhost,$dbuser,$dbpass,$dbname);

在我的页面代码中,并使用:

dbconnectionams($dbhostams,$dbuserams,$dbpassams,$dbnameams);

在同一页面的另一行代码中,发生错误,如下所示:

警告:用户访问被拒绝:'apache@localhost'(使用密码:否)
/home/firman/html/fdrsimpeg/sdm-aam/include/dbclass.php 在第 17 行

警告:MySQL 连接失败:用户访问被拒绝:'apache@localhost'
(使用密码:否)在 /home/firman/html/fdrsimpeg/sdm-aam/include/dbclass.php
在第 17 行

mysql连接错误:

我必须怎么做才能解决这个问题?

4

4 回答 4

0

您需要将 true 作为第四个参数传递给 mysql_connect 函数。

$database1 = mysql_connect($host1, $user1, $pass1); 
$database2 = mysql_connect($host2, $user2, $pass2, true); 

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

要查询您的数据库,请使用以下命令:

mysql_query('SELECT * FROM table', $database1);
mysql_query('SELECT * FROM table', $database2);

在 Stackoverflow 上查看此答案 ....链接

于 2012-05-10T09:04:43.033 回答
0

首先,更改变量名称,您将更容易阅读代码......其次,问题似乎出在连接上,因为它检测到用户名是“apache”。检查函数中的变量名称...更改它们并重试。

//database 1
$dbhost='localhost';
$dbuser='user1'; 
$dbpass='pass1';
$dbname='dbname1';

//database 2
$dbhostams='192.168.16.3';
$dbuserams='user2';
$dbpassams='pass2';
$dbnameams='dbname2';  

function dbconnection($_dbhost,$_dbuser,$_dbpass,$_dbname){
    if(!mysql_connect($_dbhost,$_dbuser,$_dbpass)){
        echo "Error occure on opening connection or database. Period.";
    }else{
        if(!mysql_select_db($_dbname)){
            echo "Error occure on select databases !";
        }
    }
}
function dbconnectionams($_dbhostams,$_dbuserams,$_dbpassams,$_dbnameams){
    $cxn = mysql_connect($_dbhostams,$_dbuserams,$_dbpassams,$_dbnameams);
    if( $cxn === FALSE ) {  
        die('mysql connection error: '.mysql_error()); 
    }else{
        if( !mysql_select_db($dbnameams) ){
            echo "Error occure on select databases !";
        }
    }
}
于 2012-05-10T09:08:07.790 回答
0

您的全局变量($dbhost,$dbuser等)不在您的函数调用范围内;例如,如果这些函数调用发生在另一个函数中,您将需要使用global关键字在函数中声明变量以便访问它们(否则 PHP 认为您指的是本地同名的不同变量功能):

function foo() {
  global $dbhost, $dbuser, $dbpass, $dbname;
  dbconnection($dbhost,$dbuser,$dbpass,$dbname);
}

阅读有关PHP 变量范围的更多信息。

于 2012-05-10T09:24:20.353 回答
0

我没有看到任何明显错误,我按照提供的代码测试了您的代码并且两个连接都有效。

检查是否在您的 php.ini 中设置了mysql.default_usermysql.default_host

于 2012-05-10T09:51:23.213 回答