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

Fonksiyona mysql connection'ı parametre olarak göndermek...

main.php dosyasından bir mysql bağlantısı kuruyorum, daha sonra bu bağlantıyı muhtelif fonksiyonlarda kullanmak istiyorum.

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name) or die (mysql_error());
$stats = $queries->normal($mysqli);


queries class'ım da şu şekilde:

class queries {
    function normal($mysqli) {
        $query = "SELECT number, first, last FROM roster";
        $roster = $mysqli->query($query);


Ama bu şekilde çalışmıyor. Oluşan hata şu:

Call to a member function normal() on a non-object
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • radalin adlı üyenin fotoğrafı
    8 yıl önce yazılmış
    1 cevap - 0 soru
    $queries degiskenini $queries = new queries() seklinde yaratmamissin bunun icinde hata aliyorsun.

    hata da zaten bunu diyor sana, nesne olmadan nesne metodu cagirmaya calisiyorsun.

Cevaplar

  • chris-henry adlı üyenin fotoğrafı
    8 yıl önce yazılmış
    1 cevap - 0 soru
    Kodunu bu şekilde organize etmeni tavsiye etmem... mysql bağlantısını oraya buraya göndermek fonksiyonları karmaşıklaştırır boşiu boşuna.

    Tavsiyelerim:

    * Singleton pattern: Tüm veritabanı işlemleri ile ilgili fonksiyonları tek bir class altında topla, class'ı singleton'a göre çağırıp öyle çalıştır query'ni. Singelton'ın güzel tarafı her seferinde aynı db connection'ı çağırmış olursun, her çağırışta yeni bir connection yaratmaz.

    Ör:
    public function foo() {  
      $results = Db::getInstance()->query("SELECT * FROM bar");  
      // Do other stuff
      return $results;
    }
    



    * Inheritance: MVC türü bir yapı kullanıyorsan bu yöntem daha iyi olur. Singleton ile birleştirerek daha güzel bir yapı elde edebilirsin.
    Ör:

    class DB {
      public function __construct() {
        $this->conn = Db::getInstance();
      }
    }
    
    
    class Foo extends DB {
      public function foo() {
        $this->conn->query("SELECT * FROM bar");
      }
    }