Farklı PHP sayfaları aynı MySQL Bağlantısı Kullanma

4 Cevap php

Benim üniversite projesi için PHP basit bir Web uygulaması oluşturma. Ben MySQL veritabanı kullanıyorum.

Ben login.php de veritabanına bağlanmak. Bağlantı sonra $ _SESSION için bağlantıyı ["bağl"] atamak ve ardından main.php yönlendirebilirsiniz.

Main.php ben ["bağl"] $ conn = $ _SESSION yazmak. Ama $ Bağlan bağlantısı çalışmıyor.

Ben login.php komut biter gibi, bağlantı kapalı alır düşündüm. Yani mysql_pconnect kullanarak yerine mysql_connect denedim ama bu da işe yaramazsa.

Ben her PHP dosyası veritabanına yeniden biliyorum. Ama bunu yapmak istemiyorum. Tüm PHP dosyaları aynı bağlantıyı kullanmak istiyorum.

4 Cevap

Bunun yerine bir oturumda DB bağlantısını tasarrufu böyle db.php gibi ayrı bir dosyada bağlantı aramaları yapmak ve sonra da komut her birinden bunu gerektirir gerekir. Örneğin, db.php sizin bağlantınızı yerleştirin:

mysql_connect('...', '...', '...');
mysql_select_db('...');

ve sonra login.php onu getirmek:

require('db.php');
$res = mysql_query('...');

Daha sonra DB erişim ihtiyacı ve sadece hiç bir dosyada DB erişim kimlik değiştirmek zorunda olacak her PHP dosyası için aynı şeyi yapabilirsiniz.

Bağlantı sonra $ _SESSION için bağlantıyı ["bağl"] atamak ve ardından main.php yönlendirebilirsiniz.

Muhtemelen PHP sessions üzerinde okumak isteyeceksiniz. Onlar serialized ve saklanan olamaz çünkü, bir oturumda kaynakları (veritabanı bağlantıları, dosya kolları, vb) depolamak olamaz.

(FastCGI aracılığıyla CGI aracılığıyla veya yerleşik modülü üzerinden) bir PHP komut dosyası için her ziyaret PHP yorumlayıcısı yeni bir örneğini çağırır unutmayın, ve script yeni bir örneğini çağırır. Komut çıktığında tüm çevre kaybolduktan çünkü hiçbir şey, komut çağrıları arasında paylaşılır.

Diğer cevaplar doğru - her komut çağrı veritabanına bağlanmak gerekir. Kolaylık sağlamak için dosyayı içeren bir ortak bağlantısını yerleştirin.

İkinci istek veritabanı kaynaklarının tamamen ayrı bir dizi olacak anlamına gelir, ilk olarak aynı web sunucu işlemi tarafından servis edilmeyebilir. Sen sorgular çalıştırmak için bu yeni süreçte yeniden bağlamanız gerekir.

Ne normalde sayfaları bir bağlantı kurmak amacıyla gerektiren bir bağlantı sınıftır. Çizgisinde bir şey:

class Connection    {
    public $dbConnection = null;
    public $isConnectionActive = false;
    private $dbServer = null;
    private $dbCatalog = null;
    private $dbUser = null;
    private $dbPassword = null;
}

Bu sınıf, herhangi bir sayfada bağlantı açılış ve kapanış işler.