Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Poprawne zapytania mysql
Loped
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

Ostrzeżenie: (0%)
-----


Witam. Od razu przepraszam jakby temat się powtórzył, ale nie mogłem znaleźć podobnego. ; ) Jako początkujący w MySQL, chciałbym się dowiedzieć jak dobrze pisać zapytania. Może wyjaśnię mój problem na przykładzie:

  1. SELECT * FROM pracownicy WHERE id="'.$id.'"
. Jak zauważyłem niektórzy obok zmiennej id wstawiają "', lub pojedyńcze dwa apostrofy(id=''.$id.''). Czasem zdarzyło mi się zobaczyć, że wysępuje tylko jeden apostrof. Jak poprawnie, i przede wszystkim optymalnie i dobrze pisać zapytania? Chodzi jeszcze o zaczynanie zapytania. Nie wiem czy robi to jakąś różnice, ale wolę spytać. Lepiej zaczynac od ', czy "?

Drugą sprawą są backslashe.
  1. SELECT * FROM pracownicy WHERE id=\''.$id.'\'
Po co, i kiedy je wykorzystywać? Czy ich wykorzystanie ma jakiś związek z filtracją danych?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
--michu_06--
post
Post #2





Goście







jak już piszesz to całość/

1.)
  1. mysql_query('SELECT * FROM pracownicy WHERE id="'.$id.'"');

2.)
  1. mysql_query("SELECT * FROM pracownicy WHERE id=\''.$id.'\");


Apostrof od cudzysłowie różni się tym, że apostrof informuje parser o tym iż zawartość w nim podana nie zawiera żadnych zmiennych itp. które by musiały zostać dodatkowo przetworzone przez parser . Natomiast cudzysłowie informuje, iż w podanych w nim wartościach istnieją zmienne, które muszą zostać sprawdzone przez parser. Różnice to tylko czas w generowaniu, zarówno dla mysql jak i php.

co nie zmienia faktu, że oba zapytania są nie poprawnie napisane pod względem wydajności.
dla zmiennych typu INT BIGINT TINYINT (itd. chodzi o liczby całkowite) nie powinniśmy stosować cudzysłowia ani apostrofu, poprawne zapytanie powinno wyglądać tak :
  1. mysql_query('SELECT * FROM `pracownicy` WHERE `id`='.$id.' ;');
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 08:10