簡體   English   中英

PHP函數中的MySQL連接會覆蓋現有連接(其他數據庫)-如何防止這種情況?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM