php özel mysql bağlantısı

2 Cevap php

Ben 2 işlevleri, 'selam' denilen bir db bağlanır print_info denilen işlev 'kullanıcılar' olarak adlandırılan bir db bağlanır get_user_info (), ve başka, () var. Ben print_info (iç get_user_info ()) çağırır, bu yüzden bilgi alabilirsiniz. Onlar 2 farklı veritabanlarına bağlanmak ve 2 farklı bağlantıları yapmak, i connect_db ($ dbidhere) denir db bağlanmak için başka bir işlevi kullanın. I () get_user_info çağırdığınızda diğer bağlantıyı iptal istiyorum, ve ben () get_user_info çağırdıktan sonra 'selam' denilen db yeniden zorunda. Bir işlev içinde sadece özel bir bağlantı var ve diğer bağlantı iptal etmez bir yolu var mı?

function get_user_info() {
connect_db($db1);
$query = 'blah blah';
$row = mysql_fetch_array($query);
echo $row['cool'];
}

function print_info() {
connect_db($db2);
$query = 'blah blah again';
get_user_info(); // Here is where it cancels out the 'connect_db($db2)' and replaces it with get_user_info connection
}

2 Cevap

Onu iptal etmez, varsayılan bağlantıyı değiştirmek için bunu sormak.

Muhtemelen veritabanına konuşuyor mysql_query gibi en fonksiyonları için isteğe bağlı bir bağlantı tanıtıcısı argüman olarak mysql_connect dan dönen değeri nasıl kullanabileceğinizi bakmak istiyorum.

Edit: zaten olmadığını varsayarak, bu mysql_query () ve mysql_connect () çağrıları her ikisi de ihmal gibi söylemek zordur.

Bu ikinci argüman () mysql_query olarak size veritabanı işleyicisi geçmek önemlidir;

$result = mysql_query('select ...', $db1); OR
$result = mysql_query('select ...', $db2);

<?php

$DB1 = mysql_connect('localhost', 'user', 'pass') or die('Could not connect to localhost db');
mysql_select_db('foo', $db1);

$DB2 = mysql_connect('192.168.0.2', 'user', 'pass') or die('Could not connect to 192.168.0.2 db');
mysql_select_db('bar', $db2);

function get_user_info($id){

  // access to DB1
  global $DB1;

  // try something like:
  if($result = mysql_query("select user.* from user id = {$id}", $DB1)){
    $user = mysql_fetch_assoc($result);
    echo $user['name'];
  }

}

function print_info(){

  // access to DB2
  global $DB2

  // try something like:
  if($result = mysql_query("select user_id from foo where bar = 'zim'", $DB2)){
    $foo = mysql_fetch_assoc($result);
  }

  get_user_info($foo['user_id']);

}

?>