Sınıf PHP echo sorgu sonuç?

2 Cevap php

Hi all I have a question about PHP Class. I am trying to get the result from Mysql via PHP. I would like to know if the best practice is to display the result inside the Class or store the result and handle it in html.

Örneğin, Sınıf içinde sonucu görüntülemek

class Schedule {
           public $currentWeek;

            function teamQuery($currentWeek){

            $this->currentWeek=$currentWeek;


            }
            function getSchedule(){
                $connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
                    if (!$connection) {
                        die("Database connection failed: " . mysql_error());
                    }

                    $db_select = mysql_select_db(DB_NAME,$connection);
                    if (!$db_select) {
                        die("Database selection failed: " . mysql_error());
                    }

                  $scheduleQuery=mysql_query("SELECT guest, home, time, winner, pickEnable FROM $this->currentWeek ORDER BY time", $connection);

                    if (!$scheduleQuery){
                        die("database has errors: ".mysql_error());
                          }


                    while($row=mysql_fetch_array($scheduleQuery, MYSQL_NUMS)){
                    //display the result..ex: echo $row['winner'];

                    }     
                    mysql_close($scheduleQuery); 

                    //no returns
                    }


        }

Ya da bir değişken olarak sorgu sonucu dönün ve php işlemek

class Schedule {
           public $currentWeek;

            function teamQuery($currentWeek){

            $this->currentWeek=$currentWeek;


            }
            function getSchedule(){
                $connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
                    if (!$connection) {
                        die("Database connection failed: " . mysql_error());
                    }

                    $db_select = mysql_select_db(DB_NAME,$connection);
                    if (!$db_select) {
                        die("Database selection failed: " . mysql_error());
                    }

                  $scheduleQuery=mysql_query("SELECT guest, home, time, winner, pickEnable FROM $this->currentWeek ORDER BY time", $connection);

                    if (!$scheduleQuery){
                        die("database has errors: ".mysql_error());
                    // create an array    }
                    $ret = array();   

                    while($row=mysql_fetch_array($scheduleQuery, MYSQL_NUMS)){

                    $ret[]=$row;
                    }     
                    mysql_close($scheduleQuery); 

                    return $ret;  // and handle the return value in php
                    }


            }

Burada iki şey:

  1. Ben php döndü değişken iki boyutlu dizi olduğu için oynamak için biraz karmaşık olduğunu buldu. Ben en iyi uygulama nedir emin değilim ve size uzman görüşler sormak istiyorum.

  2. Ben yeni bir yöntem oluşturmak her zaman, ben $ bağlantı değişkeni yeniden var: aşağıya bakınız

    $connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS); if (!$connection) { die("Database connection failed: " . mysql_error()); }

                        $db_select = mysql_select_db(DB_NAME,$connection);
                        if (!$db_select) {
                            die("Database selection failed: " . mysql_error());
                        }
    

Bana gereksiz gibi görünüyor. Ben sadece bunun yerine bir sorgu gerekir her zaman bunu çağıran bir kez yapabilirsiniz? Ben php sınıfa yeni duyuyorum. Siz bana yardımcı olabilir umuyoruz. teşekkürler.

2 Cevap

Onlar sadece veritabanını sorgulamak ve sonucu geri dönmek yüzden 'erişimcilerine' olarak bu gibi sınıflar davranın. Bu şekilde onu çağırır herhangi bir PHP kodu onunla istediği her şeyi yapabilir. Bu görüntüleniyor olabilir ya da bir çek olabilir veya bir güncelleme olabilir. Bu ekrandan mantığı veri deposuna ayıran ve kod daha esnek olacak demektir bu iyi tasarım. Ama evet, biraz daha karmaşık.

Ilgili bağlantısını her zaman yeniden yaratmak için. Bu olabilir veya gerekli olmayabilir. Ayarlarınıza bağlı olarak bir bağlantı havuzu oluşturmak mümkün olabilir. Şimdi daha kolay için için yapmak için, kendi yöntemine bir bağlantı oluşturulmasını soyut olabilir. Bu şekilde sadece bir bağlantı tanıtıcısı almak için başında bu yöntemi çağırmanız gerekir. Bu her yerde aynı kod birçok kopyasını zorunda sizi kurtarır.

PHP sınıfları için yeni iseniz ben nesne yönelimli tasarım üzerinde biraz araştırma yapıyor öneririz. Bu size bunun yerine onları görüntüleme sonuçlarını döndürmek için neden isteyeyim da soyut bazı işlevler, ve yararlı olacağını neden bir fikir verecektir.

Onun muhtemelen kötü bir fikir sonucunu döndürür veya başka yerde yankılanan için belirlenen sonuç nstead sonuç int o sınıf yankı.

Bağlantı sınıfının bir mebmer gibi olabilir:

protected $_connection = null;

Sonra constructor size veritabanı bağlantısı atayabilirsiniz. Normalde olsa db bağlantısı henüz başka bir sınıf tarafından sarılmış olacaktır.

I were Ayrıca eğer i mysql fonksiyonlarını kullanmak olmaz. Bunun yerine Mysqli veya PDO_MYSQL sürücüleri kullanın. Bunlar varsayılan bir nesne orientend şekilde tüm bu işlevselliği çevreliyor. Daha sonra bunun yerine sıfırdan çalışan özel işlevselliği ile bu sınıfları uzatabilirsiniz.