[英]PHP/MySQL: How to create/access one database connection within objects?
[英]MySQL connection within a PHP function overwrites existing connection (other database) - how can I prevent this?
我們打開我們的腳本的開頭一個MySQL連接HOST_ 1。 介於兩者之間,我們稱之為打開和關閉,以HOST_ 2(功能retrieve_information_from_host_2)連接的功能。
不幸的是, 函數調用后的代碼 仍然使用 函數 的連接 ( host_2 )。
我們需要它來繼續前面的連接 host_ 1 。
<?php
function retrieve_information_from_host_2($host_2, $username_2, $password_2, $database_2) {
$connection = mysql_connect($host_2, $username_2, $password_2);
if($connection) {
if(mysql_select_db($database_2)) {
$sql = "SELECT * FROM table WHERE id = 1;";
$erg = mysql_query($sql);
$row = mysql_fetch_assoc($erg);
return $row;
}
mysql_close($connection);
}
}
if(mysql_connect($host_1, $username_1, $password_1)) {
if(mysql_select_db($database_1)) {
$sql = "SELECT * FROM table WHERE id = 1;";
$erg = mysql_query($sql);
$row = mysql_fetch_assoc($erg); # CORRECT - This returns data from host 1
$row_host_2 = retrieve_information_from_host_2(); # CORRECT - This returns data from host 2
$sql = "SELECT * FROM table WHERE id = 2;";
$erg = mysql_query($sql);
$row = mysql_fetch_assoc($erg); # WRONG - This returns data from host 2 instead of host 1
}
mysql_close();
}
?>
我們已經通過為每個連接命名來嘗試幾乎所有組合
$connection_1 = mysql_connect($host_1, $username_1, $password_1);
...
mysql_close($connection_1);
並明確關閉它們,等等。
沒有任何幫助。 有人可以給我們解決這個問題的方法嗎?
PS:我們受此方法(函數)的約束,不能使用類。
非常感謝你!
有關第二個參數link_identifier,請參見mysql_query手冊(MySQL連接)
如果未指定鏈接標識符,則假定使用mysql_connect()打開的最后一個鏈接。
您還應該使用mysqli而不是舊的mysql。
嘗試將您的連接鏈接標識符作為第二個參數傳遞。
例如:
$connection1 = mysql_connect($host_1, $username_1, $password_1);
$connection2 = mysql_connect($host_2, $username_2, $password_2);
mysql_query('Query',$connection1);
mysql_query('Query',$connection2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.