Arkadaşlar merhaba bir sorum olacak.
2 Adet fonksiyonum var 1. fonksiyonum yani a fonksiyonu içerisinde veritabanı bağlantısı var.
2.Fonksiyonum'da ise yani b fonksiyonum'da başka bir kodlama var.
Haliyle 2.fonksiyon içerisinde 1.fonksiyon'daki veritabanı bağlantısını kullanıp verilere erişemiyorum.
2 fonksiyonu birbirine nasıl birleştirebilirim ? veya bağlayabilirim.
Bunlar 1 class'ın içerisinde bu arada.
global fonksiyonu ile hallettim teşekkürler arkadaşlar.
basit ve hızlı bir örnek yazdım, hatalar olabilir test edersiniz.
define('DB_KEY','__db_resource');
function db_resource() {
if (isset($GLOBALS[DB_KEY]) && is_resource($GLOBALS[DB_KEY])) {
return $GLOBALS[DB_KEY];
}
$GLOBALS[DB_KEY] = mysql_connect('localhost', 'user', 'pass');
if(!$GLOBALS[DB_KEY]) exit(mysql_error());
if(!mysql_select_db('dbName',$GLOBALS[DB_KEY])) exit(mysql_error());
return $GLOBALS[DB_KEY];
}
function db_disconnect() {
if (isset($GLOBALS[DB_KEY]) && is_resource($GLOBALS[DB_KEY])) {
mysql_close($GLOBALS[DB_KEY]);
$GLOBALS[DB_KEY] = NULL;
}
}
register_shutdown_function('db_disconnect');istediğiniz fonksiyon ve class methodu içerisinde
mysql_query('SELECT bla bla bla',db_resource())global yerine kullanabilirsiniz.
art arda
$link = db_resource();
$link = db_resource();
$link = db_resource();
yazsanız dahi ilkinde bağlantı açılacak diğer çağrılarda mevcut bağlantıyı döndürecektir. veritabanı bağlantısı kullanmadığınız sayfalarda db_resource fonksiyonunu çalıştırmadığınız için boş yere bağlantı açmamış olursunuz ve php betiği sonladığında otomatik olarak veritabanı bağlantınız varsa kapatılacaktır.