Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

PHP ile Mysql ve Veritabanına Bağlanma Sınıfında Hata

Php ile mysql ve veritabanına bağlanmak için bir sınıf yazmaya çalışıyorum. Aşağıdaki gibi birşeyler kodladım fakat hata veriyor. Hatanın neden kaynaklandığını anlamadım. Yardımlarınızı Bekliyorum.

<?php
class Baglanti{
	private $host 	= "localhost";
	private $user 	= "root";
	private $pass 	= "";
	private $vt		= "db";

		function baglan($a,$b,$c,$d){
			$baglan = mysql_connect($a,$b,$c);
			if(! $this->baglan){die ("Mysql Bağlantısı Sağlanamadı.");}
			else{
			mysql_selec_db($d,$baglan) or die("Veritabanına Bağlantı Sağlanamadı.");
			}
		}

	baglan($host,$user,$pass,$vt);
}

$baglati = new Baglanti();

?>


Hatada Şu Şekilde :

Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\AppServ\www\Dersler\index.php on line 20
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • madpoet adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    83 cevap - 0 soru
    class'ın içerisinde baglan($host, $user .... şeklinde bir kullanım yok...
    Anladığım kadarıyla class başlatıldığı anda bağlansın istemişsiniz. Bunun için __construct adında bir fonksiyon kullanmanız gerek...

    class Baglanti {
        private $host = 'localhost';
        .....
    
        public function __construct() {
            $this->baglan($this->host, $this->user ....);
        }
    
        public function baglan($a, $b, $c, $d) {
            ....
        }
    }
    


    gibi birşey olacak. Fonksiyonu class içerisinde çağırırken (method da denir) $this->fonksiyon_adi() seklinde çağırmanız gerek. Tanımladığınız değişkenleri de yine class içerisinde $this->degisken_adi diye çağırmanız gerek...
    • aqrepqral adlı üyenin fotoğrafı aqrepqral
      Dediğiniz gibi __construt ile yaptım çalıştı. Daha sonra __construct ile değil direkt olarak baglan fonksiyonunu çağırdım ve yine hata verdi. Bu hatanın sebebi nedir?

      Kodun son hali:

      <?php
      
      class Baglanti{
      	
      	private $host 	= "localhost";
      	private $user 	= "root";
      	private $pass 	= "";
      	private $vt		= "db";
      
      		function baglan($a,$b,$c,$d){
      		
      			$baglan = mysql_connect($a,$b,$c);
      			if(! $baglan){die ("Mysql Bağlantısı Sağlanamadı.");}
      			else{
      			mysql_select_db($d,$baglan) or die("Veritabanına Bağlantı Sağlanamadı.");
      			}
      		}
      
      	$this->baglan($this->host,$this->user,$this->pass,$this->vt);
      		
      }
      
      $baglati = new Baglanti();
      
      ?>
      
      


      Bu da hata son hata mesajı

      Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\AppServ\www\Dersler\index.php on line 19
      10 yıl önce yazılmış
    • madpoet adlı üyenin fotoğrafı madpoet
      Ne yapmak istediğinizi anlamadım ki... Öyle bir kullanım yok... O $this->baglan(...) koyduğunuz yerde ya metot tanımlayacaksınız ya da bir değişken. Öyle ortalığa direkt fonksiyon yazarsanız parse error olur.

      Eğer class oluştuğu anda bağlanmasını istemiyorsanız onu sonradan şöle çalıştırabilirsiniz:

      
      class Baglanti {
          private $host = 'localhost';
          .....
      
          function baglan() {
              mysql_connect($this->host, $this->user, $this->pass);
              .....
          }
      }
      
      $baglanti = new Baglanti();
      $baglanti->baglan();
      


      baglan metoduna host, user vs. bilgilerini parametrik gönderme imkanı da olsun derseniz de:

      
      .........
      
      public function baglan($host = null, $user = null, $pass = null, $db = null) {
          if(is_null($host)) {
              $host = $this->host;
          }
          ....
      
          mysql_connect($host, ....
      }
      
      .....
      

      gibi birşey yapabilirsiniz....
      10 yıl önce yazılmış
    • aqrepqral adlı üyenin fotoğrafı aqrepqral
      Tamam saolun cevabınız için. Daha acemi olduğumdan bilmiyorum hangi şekil kullanım olur olmaz. Ama yavaş yavaş öğreniyoruz. Teşekkürler...
      10 yıl önce yazılmış
    • madpoet adlı üyenin fotoğrafı madpoet
      Rica ederim hepimiz aynı yollardan geçtik...
      10 yıl önce yazılmış

Cevaplar

Hiç cevap bulunamadı.