v2.5.2
Giriş yap

PHP Class içinde Functionlar arası Database bağlantı erişme

swatalk
149 defa görüntülendi

Herkese merhaba Class içinde bağlantı fonksiyonu var başka bir fonksiyondan database başlantısına nasıl erişebilirim bu hatayı alıyorum bağlantıya erişemediğim için sanırım çözemedim.
Fatal error: Uncaught Error: Call to a member function query() on null

    class Uyeler {

		private $conn;

		public function Baglanti(){

	 		try {

	            $this->conn = new PDO('mysql:host=localhost;dbname=uyeler', 'root', ''); 
	            $this->conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
	            $this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

	        } catch (Exception $e) {

	            echo 'ERROR: ' . $e->getMessage();
	        }

    	}

    	public function KullaniciBilgisi(){

    		return $this->conn->query("SELECT * FROM users WHERE id=1")->fetch();

    	}

	}

	$Class = new Uyeler();
	print_r($Class->KullaniciBilgisi());
Cevap yaz
Cevaplar (1)
webdevyusuf
42 gün önce

Merhaba, sınıfın içindeki bağlantı değişkenine bir bağlantı tanımlanmamış.

Constructors dediğimiz yapıcılar bunun için kullanabilirsin.

class Uyeler {

	private $conn;

	function __construct(){
	    // new Uyeler(); olarak çağırıldığında ilk yapıcı çalışacak ve $conn değerine bağlantıyı atayacak
 		try {

            $this->conn = new PDO('mysql:host=localhost;dbname=uyeler', 'root', ''); 
            $this->conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            $this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

        } catch (Exception $e) {

            echo 'ERROR: ' . $e->getMessage();
        }

	}

	public function KullaniciBilgisi(){

		return $this->conn->query("SELECT * FROM users WHERE id=1")->fetch();

	}

}
$Class = new Uyeler();
print_r($Class->KullaniciBilgisi());