Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[MySQL/PHP] Optymalizacja sql w zależności od zmiennej

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[MySQL/PHP] Optymalizacja sql w zależności od zmiennej

Post 16.11.2017, 16:35:57

Witam,
Czy i w jaki sposób można zoptymalizować poniższe zapytania w zależności od przesłanej zmiennej
Kod: Zaznacz cały
<?php
if($action=="showAll"){
$stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
$stmt->execute();
}
elseif($action=="site"){
$stmt=$DB_con->prepare('SELECT menu FROM slist WHERE site=:id GROUP BY menu ORDER BY menu');
$stmt->execute(array(':id'=>$id));
}
elseif($action=="menu"){
$stmt=$DB_con->prepare('SELECT categ FROM slist WHERE menu=:id GROUP BY categ ORDER BY categ');
$stmt->execute(array(':id'=>$id));
}
elseif($action=="categ"){
$stmt=$DB_con->prepare('SELECT links FROM slist WHERE categ=:id GROUP BY categ ORDER BY links');
$stmt->execute(array(':id'=>$id));
}
else{
$stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
$stmt->execute();
}
?>
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA

Re: [MySQL/PHP] Optymalizacja sql w zależności od zmiennej

Post 18.11.2017, 23:08:36

W jaki sposób poprawić zapytania, żeby przekazać wartość menu do zapytania ($action=="categ")?
Gdyby to się udało, to wówczas (prawidłowe) zapytanie wyglądało by tak:

Kod: Zaznacz cały
SELECT links FROM slist WHERE menu=:id AND categ=:cid ORDER BY links
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA

Re: [MySQL/PHP] Optymalizacja sql w zależności od zmiennej

Post 20.11.2017, 14:51:33

Zmodyfikowałem (uporządkowałem) trochę kod
Kod: Zaznacz cały
    switch($action)
    {
    case 'showAll';
      $stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
      $stmt->execute();
    break;
    case 'site';
      $stmt=$DB_con->prepare('SELECT menu FROM slist WHERE site=:id GROUP BY menu ORDER BY menu');
      $stmt->execute(array(':id'=>$id));
    break;
    case 'menu';
      $stmt=$DB_con->prepare('SELECT categ FROM slist WHERE menu=:id GROUP BY categ ORDER BY categ');
      $stmt->execute(array(':id'=>$id));
    break;
    case 'categ';
      $menu = $_POST['menu'];
      $stmt=$DB_con->prepare('SELECT links FROM slist WHERE menu=:menu AND categ=:id GROUP BY categ ORDER BY links');
      $stmt->execute(array(':menu'=>$menu, ':id'=>$id));
    break;
   default:
      $stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
      $stmt->execute();
    break;
    }

Czy da się jakoś to zoptymalizować?
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 2 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50894 zarejestrowanych użytkowników.
Najnowszy użytkownik: LetaMest


Nasi użytkownicy napisali:

  • 936379 wiadomości
  • w 246838 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)