Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/PDO] zapytania 'zwykłe' vs. te z użyciem bindParam
Forum PHP.pl > Forum > Przedszkole
e-ax
Witam.

Poznaję właśnie PHP i zastanawia mnie jedna rzecz. Dlaczego tak często używana jest metoda wykonywania zapytań w PDO z użyciem bindParam?
Argumentem przemawiającym za tą metodą jest przejrzystość kodu jaki otrzymujemy, jednak w zamian liczba znaków, które trzeba zapisać rośnie dość znacznie [ szczególnie przy dużej liczbie zmiennych w zapytaniu ].

Dlaczego więc stosować taki twór:

  1. <?php
  2. $pdo->prepare( 'INSERT INTO sadf VALUES ( :val1, :val2, :val3 ) ' );
  3.    $sth->bindParam(':val1', $qwer, PDO::PARAM_STR);
  4.    $sth->bindParam(':val2', $asdf, PDO::PARAM_STR);
  5.    $sth->bindParam(':val3', $wer, PDO::PARAM_STR);
  6.    $sth->execute();
  7. ?>


zamiast krótszego, acz o wiele mniej przejrzystego:
  1. <?php
  2. $pdo->exec( 'INSERT INTO sadf VALUES ( ''.$val1.'' , ''.$val2.'' , ''.$val3.'' )');
  3. ?>


W czym to pierwsze lepsze jest od drugiego?
Z góry dziękuję za odpowiedzi.
Crozin
bindValue() przy okazji filtruje dane. Treść zapytania jest dużo czytelniejsza - nie jest zaśmiecone jakimiś zmiennymi.
nexis
1) przejrzystość
2) bezpieczeństwo (SQL Injection)
3) pilnowanie typów danych
e-ax
No tak, ale czy przejrzystość jest warta pisania 2 lub więcej razy większej objętości kodu?
nospor
przykladowo na liscie nexisa przejrzystosc byla tylko jednym z punktow. Najwazniejszym z nich jest bezpieczenstwo.
Co do przejrzystosci: tak warto. Moze nie przy kodzie, ktory ma 5 linijek, ale przy kodzie co ma 5 tys poczujesz roznice winksmiley.jpg (w sumie w roznych plikach 5 tys a nie w jednym - bez hardcorow winksmiley.jpg )
e-ax
Dziękuję bardzo za rozjaśnienie sytuacji winksmiley.jpg
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.