2009-08-14 4 views
0

для проекта Мне нужно открыть соединение Mysql, закрыть его и запустить старый старый код. Унаследованный код имеет собственное соединение и просто вызывает mysql_query ($ sql) без параметра ресурса.Обработка двух mysql-соединений в PHP

Как я могу справиться с этим? Могу ли я установить связь Mysql как глобальную? Должен ли я повторно выполнить оператор mysql_connect()? Устаревший код не может быть реорганизован только сейчас.

Вот короткий демо

<?php 

function show() 
{ 
    $a = mysql_fetch_array(mysql_query('select database()')); 
    echo $a[0] . "<br>"; 
} 

$conn = mysql_connect('localhost', 'root', '', TRUE); 
mysql_select_db('dredd'); 
show(); 

mysql_connect('localhost', 'root', '', TRUE); 
mysql_select_db('afup'); 
show(); 
mysql_close(); 

$a = mysql_fetch_array(mysql_query('select database()', $conn)); 
echo $a[0] . "<br>"; 

show(); 

Первый выбор в порядке, второй два, третий в порядке, потому что есть Ressource, но четвёртая сломал ("Доступ запрещен для пользователя„ODBC“@» localhost '(используя пароль: NO) ").

С уважением, Седрик

ответ

5

Если не указать соединение будет использовать последний созданный один, так что это должно быть хорошо, если вы закроете другое соединение первого, например,

//open your db connection 
$conn1 = mysql_connect(); 
mysql_query($sql, $conn1); 
mysql_close($conn1); 

//open legacy code's db connection 
$conn = mysql_connect(); 
//run legacy code 

Если у вас возникли проблемы, может быть проще использовать PDO или MySQLi для второго соединения, потому что тогда вы знаете, что они определенно отделить без изменения существующего кода.

+0

Мое соединение db для системы с ошибкой, поэтому старый код прерывается, мой код запускается и устаревший код продолжается. Но ваша идея очень хорошая, спасибо! Я стараюсь как можно скорее. –