Bu arama fonksiyonu daha verimli yapabilir miyim?

0 Cevap php

Ben aşağıdaki kodu kullanarak bir sayfada görüntülemek için kullanıcıların bir listesini alma members.php am:

$users = $user->getUsers($_GET['skill'], $_GET['hometowm'], $_GET['county']);
  • members.php tüm üyelerini görüntüler
  • members.php?skill=Foo bu beceri ile kullanıcılara görüntüler
  • members.php?hometown=Foo memleketi kullanıcılarını "Foo" görüntüler
  • İlçenin members.php?county=Foo görüntü kullanıcılar (ABD AKA devlet)
  • members.php?skill=Foo&hometown=Foo beceri ve memleketi kullanıcıları görüntüler
  • members.php?skill=Foo&county=Foo beceri ve ilçe kullanıcıları görüntüler

İşte ben bilmek istiyorum ne: I if tabloların miktarını kısaltmak veya onları daha verimli hale bir yolu var mı? Ben doğru yapıyor muyum? Ben aslında sevmiyorum çünkü ben genişletmek istiyorum özellikle pek çok parametre var.

**User.class.php**
    public function getUsers($skill = null, $hometown = null, $county = null) {
        $user_table = $this->cfg['users_table']['table'];

        # Search Skill
        if ($skill != null && $hometown == null && $county == null) {
            $sql = 'SELECT skills.Title, users_skills.SkillId, users.*
FROM users INNER JOIN (skills INNER JOIN users_skills ON skills.SkillId = users_skills.SkillId) ON users.UserId = users_skills.UserId
WHERE (((skills.Title)="' . $skill . '"))';
        # Search Hometown
        } else if ($hometown != null && $skill == null && $county == null) {
            $sql = 'SELECT * FROM users WHERE HomeTown = "' . $hometown . '"';
        # Search County
        } else if ($county != null && $skill == null && $hometown == null) {
            $sql = 'SELECT * FROM users WHERE county = "' . $county . '"';
        # Search Skill and Hometown
        } else if ($skill != null && $hometown != null && $county == null) {
            //sql
        # Search Skill and County
        } else if($skill != null && $county != null && $hometown == null){
        } else {
            $sql = "SELECT * FROM " . $user_table;
        }
        $stmt = $this->db->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

Teşekkürler.

0 Cevap