Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ilość instrukcji warunkowych a wydajność
Forum PHP.pl > Forum > PHP
Barton
Witam,

Pisząc swój skrypt natknąłem się na 'moralny' dylemat. smile.gif Mianowicie starając się jak najbardziej skrócić kod, stworzyłem kod który w wyniku skracania ma.. dwie instrukcje warunkowe więcej niż w pierwotnym rozwiązaniu. Obecnie wygląda on tak:

  1. try {
  2. $pdo = new PDO('mysql:host=localhost;dbname=baza', 'xxx', 'yyy', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  3. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4.  
  5. $imie = $pdo -> prepare ("UPDATE users_act SET ".($_POST['imie'] !== "" ? "imie=:imie" : "")." ".($_POST['nazwisko'] !== "" && $_POST['imie'] !== "" ? "," : "")." ".($_POST['nazwisko'] !== "" ? "nazwisko=:nazwisko" : "")." WHERE login=:login");
  6.  
  7. $_POST['imie'] !== "" ? $imie-> bindValue(':imie', trim($_POST['imie']), PDO::PARAM_STR) : "";
  8. $_POST['nazwisko'] !== "" ? $imie -> bindValue(':nazwisko', trim($_POST['nazwisko']), PDO::PARAM_STR) : "";
  9. $imie -> bindValue(':login', $login, PDO::PARAM_STR);
  10.  
  11. $ile = $imie -> execute();
  12.  
  13. $imie -> closeCursor();
  14. }
  15.  
  16. catch(PDOException $e){
  17. echo 'Błąd bazy danych';
  18. }


Mogłem to zrobić tworząc 3 warunki: albo 'imie' i 'nazwisko' wypełnione, albo samo 'imie', albo samo 'nazwisko' - a następnie do każdego warunku inne zapytanie. W wyżej zamieszczonym rozwiązaniu zmieściłem niejako wszystko w jednym zapytaniu ale utworzyło się... 5 instrukcji warunkowych. Które rozwiązanie będzie korzystniejsze jeśli chodzi o wydajność skryptu?

Pozdrawiam.
abort
Chłopie, wyluzuj. Dwie instrukcje warunkowe więcej? Kilka linii kodu więcej? A to wszystko w obliczu interakcji z bazą danych, którą masz dostępną zapewne po sieci... O czym tu mówić...
wizu
Pamietaj też o tym, że niepotrzebnie zaciemniasz sobie kod.
Czasem wolę napisać coś trochę nadmiarowo (co i tak nie zrobi różnicy), ale przynajmniej za jakiś czas nie bedę miał problemów z szybkim przypomnieniem sobie o co chodziło w danej funkcji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.