我有点为这个问题疯狂。我自己做不到,所以我需要社区帮助我解决这个问题。我一直在这花费几个小时,因为我不知道该去哪里看。我现在知道一个可能的解决方法,但它只是混乱(阅读)。我只需要一个比我更了解这个的人。奇怪的mysql_多个连接问题
这是我的情况:
- 我想用2个或更多的MySQL连接。
- 我使用OOP
我有一类叫做质数据库,它有两个功能,setConnection
和getConnection
和两个类变量称为$connection
和$dbaseName
。
在我的主项目文件包括我dBASE和创建两个对象:
- 质数据库
- maindbase
然后我做的:
$this->dbase->setConnection($server, $uname, $pword);
$this->maindbase->setConnection($server, $uname, $pword);
的setConnection功能外观像这样:
function setConnection ($server, $serv_Username, $serv_Password) {
$this->connection = mysql_connect($server, $serv_Username, $serv_Password, true);
// echo $this->connection . "<BR>";
}
我赞同它看resourcenumber
并添加真正到的mysql_connect(我知道,因为它5.5弃用,我不是在这里为)。
现在,据我所知,OOP,类变量是设置每个对象。因此,来自dbase的$连接将永远不会与maindbase
相同(除非我使用相同的凭证,但即使如此,由于启用了$ new_link选项,它也会创建一个新链接)。他们都有不同的资源ID。
我的问题:
在类质数据库我也有它运行这样的查询功能:
$connection = $this->getConnection();
$dbase_name = $this->getDbaseName();
mysql_select_db($dbase_name, $connection);
$q = "SELECT * FROM {$table_name} WHERE {$column} LIKE '{$value}'";
$result = mysql_query($q);
现在,当我用它这样的,它总是使用第一个$连接这已经在类dbase中设置,并且它是哪个对象(无论是对象dbase还是maindbase
)都没有关系。
我得到这个错误:
Table 'testdbase1.skye_domains' doesn't exist
对象质数据库连接testdbase1
对象maindbase
连接到testdbase2
上述错误试图选择使用maindbase
对象的结果,当我得到。
当我从mysql_select_db
中删除$connection
字符串时,它完美地工作,因为它会尝试打开一个新的连接,就像使用mysql_connect一样。
这是为什么?这是不可能的吗?对象maindbase
如何与对象dbase具有相同的$连接?他们没有办法连接到eachother ... PHP以某种方式使用我不知道的全局mysql_connect变量或缓冲区?
我想继续使用connectionstrings
,因为这只是现在和当时的方便。离开$连接字符串似乎很混乱。
有没有人有任何建议,我可以尝试使PHP(或我的头)再次理智?
为什么地球上还在使用'mysql_'函数? –
@DC_“我知道它从5.5开始不推荐使用,我不是为了这个”已经提到 – swapnesh
@swapnesh并不意味着我不能问。 –