Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] Które szybsze?, zapytania sql
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Mam 2 pytania
-----------------
1. Dotyczy stringów. Które zapytanie będzie szybsze:

a)
  1. <?php
  2. $query = &#092;"SELECT * FROM tabela WHERE imie='$_POST[string]';\";
  3. ?>

czy
b )
  1. <?php
  2. $query = &#092;"SELECT * FROM tabela WHERE imie=\".$_POST[string].\";\";
  3. ?>
(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

2. Dotyczy liczb. Które zapytanie będzie szybsze:

a)
  1. <?php
  2. $query = &#092;"SELECT * FROM tabela WHERE numer=$_POST[numerek];\";
  3. ?>

czy
b )
  1. <?php
  2. $query = &#092;"SELECT * FROM tabela WHERE numer=\".$_POST[numerek].\";\";
  3. ?>
(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

I ewentualnie w jakich sytuacjach które rozwiązanie a czy b jest lepsze?

pozdrawiam
Go to the top of the page
+Quote Post
kubatron
post
Post #2





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


Ja tam wiem że to nie ma chyba najmniejszej różnicy ponieważ takie sprawy są małostkowe i się tym nie powinnieneś przejmować, a przejmuj się lepiej danymi które wysyłasz do za pomocą SQL.
Ja osobiscie stosuje zapytanie typu:
  1. SELECT *
  2. FROM tabela WHERE imie = '" . $_POST['STRING'] . "'

Bądz:
  1. SELECT *
  2. FROM tabela WHERE imie = {$_POST['STRING']}


Drugi sposób dokładnie niepamiętam ale chyba tak to się robiło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
crash
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


1b i 2b z tym, że 1b jest niepoprawne, poprawna wersja:
  1. <?php
  2. $query = &#092;"SELECT * FROM tabela WHERE imie='\".$_POST[string].\"';\";
  3. ?>
Go to the top of the page
+Quote Post
Jarod
post
Post #4





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(kubatron @ 2005-05-17 19:08:32)
a przejmuj się lepiej danymi które wysyłasz do za pomocą SQL.

Możesz napisać dokładnie co masz na myśli ? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

@crashu: wiem - moje przeoczenie - przepraszam za błąd.

Zadałem te pytania bo znalazłem w topiku http://forum.php.pl/index.php?showtopic=23258&st=0

takie stweirdzenie
Cytat(kinool)
  1. <?php
  2. $query = 'update `uzytkownicy` set `pole`=\"'.$dane.'\" where `id`=\"'.$id.'\";';
  3. ?>

to jak juz powiedziano zadne zabezpieczenie a pozatym zmnijsza wydajnosc zapytania, umieszczanie wartosci liczbowych w momiedzy " " powiduje iz MySQL mysli ze ma do czynienia ze znakami (stringami) i niepotzrebnie musi konwertowac typy.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


j.w.
  1. <?php
  2. $query = 'SELECT * FROM tabela WHERE imie='' . $_POST[ 'string' ] . ''';
  3. ?>
Go to the top of the page
+Quote Post
Jarod
post
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


W przykładzie tutaj (na samym końcu) http://webcity.pl/webcity/artykuly.php/t/19 stosowane jest łączenie za pomocą '.
Sam juz nie wiem
Go to the top of the page
+Quote Post
Majdan
post
Post #7





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


Cytat(emilio @ 2005-05-17 21:20:31)
Z tego co się orientuje, to łączenie '. jest wolniejsze niż "' w przypadku zapytań SQL. Dlatego jestem za 1a.

A dlaczego w przypadku zapytań? (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)

Na początku wydawać by się mogło, że 1b i 2b, ale... Jeżeli string w " musi zostać przeparsowany w poszukiwaniu $ (zmiennych), to tak czy siak został już przeszukany. W takim wypadku wychodzi na to, że nie ma różnicy. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ale przecież parser jeszcze musi sprawdzić, czy przypadkiem nie chcemy wyświetlić zmiennej $_POS, czy może $_PO, a może właśnie chodzi nam o klucz tablicy $_POST['string']! (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Takie dylematy lepiej zostawić sobie i trzymać się tego, aby zmienne łączyć ze stringami, same stringi trzymać w ' i jak najżadziej używać " i \. (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)
Go to the top of the page
+Quote Post
Jarod
post
Post #8





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Ok czyli będę stosował notację '.
Jeszcze takie jedno pytanko. Czy zapis $zmienna stosować też tak jak $_POST['znienna']?

Dziękuje za odpowiedzi

pozdrawiam
Go to the top of the page
+Quote Post
Majdan
post
Post #9





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

Ostrzeżenie: (10%)
X----


W tablicy $_POST[] są wszystkie zmienne przesłane tą metodą. Znajdują się pod postacią kluczy o takiej samej nazwie - $_POST['{nazwa zmiennej}'].
Jeżeli masz włączone register_globals (nie polecam), to zmienne odbierasz ${nazwa zmiennej}.

Jeżeli chcesz dowiedzieć się więcej o tablicach zajrzyj do manuala.
Go to the top of the page
+Quote Post
kubatron
post
Post #10





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


J4r0d: Chodzi mi o dane wejściowe do zapytanie SQL, np SQL INJECTION itp. poczytaj troche na forum o tym jest a ja ci dam linka http://forum.php.pl/index.php?showtopic=23258

I do roboty (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Jarod
post
Post #11





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(kubatron @ 2005-05-18 20:20:13)
J4r0d: Chodzi mi o dane wejściowe do zapytanie SQL, np SQL INJECTION itp. poczytaj troche na forum o tym jest a ja ci dam linka http://forum.php.pl/index.php?showtopic=23258

I do roboty (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Z tym to się już dawno zapoznałem. Ale dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
code46
post
Post #12





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 21.04.2005

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


Cytat(Majdan @ 2005-05-17 19:49:50)
Cytat(emilio @ 2005-05-17 21:20:31)
Z tego co się orientuje, to łączenie '. jest wolniejsze niż "' w przypadku zapytań SQL. Dlatego jestem za 1a.

A dlaczego w przypadku zapytań? (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)

Na początku wydawać by się mogło, że 1b i 2b, ale... Jeżeli string w " musi zostać przeparsowany w poszukiwaniu $ (zmiennych), to tak czy siak został już przeszukany. W takim wypadku wychodzi na to, że nie ma różnicy. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ale przecież parser jeszcze musi sprawdzić, czy przypadkiem nie chcemy wyświetlić zmiennej $_POS, czy może $_PO, a może właśnie chodzi nam o klucz tablicy $_POST['string']! (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Takie dylematy lepiej zostawić sobie i trzymać się tego, aby zmienne łączyć ze stringami, same stringi trzymać w ' i jak najżadziej używać " i \. (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)

Czyli mam pisać tak:

  1. <?php
  2. $query = 'SELECT * FROM tabela WHERE imie='.$_POST[string].';';
  3. ?>


? (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)
Go to the top of the page
+Quote Post
mike
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Nie.

Tak:
  1. <?php
  2.  
  3. $query = "SELECT * FROM tabela WHERE imie = '".$_POST[ 'string' ] . "'";
  4.  
  5. ?>


P.S.
Nie masz co robic tylko odświeżać wątki sprzed pondad roku (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
code46
post
Post #14





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 21.04.2005

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


Cytat(mike_mech @ 2006-04-10 14:10:21)
Nie.

Tak:
  1. <?php
  2.  
  3. $query = "SELECT * FROM tabela WHERE imie = '".$_POST[ 'string' ] . "'";
  4.  
  5. ?>


P.S.
Nie masz co robic tylko odświeżać wątki sprzed pondad roku (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Czytałeś co Majdan napisał parę postów wyżej?
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@code64
Cytat
Czytałeś co Majdan napisał parę postów wyżej?
A co ty sie czepiasz majka? Chlopak poprawil ci kod, ktory miales bledny. Jakbys wykonal to zapytanie co stworzyleś, to bys dostal errory (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a to ze majk nie przyjął zapisu Majdana, to nie przestępstwo. pozatym sam bys czytal posty co wyżej, a nie pytal oto samo. dr_bonzo pare postow wyzej podal jak to powinno byc prawidlowo:
  1. <?php
  2. $query = 'SELECT * FROM tabela WHERE imie='' . $_POST[ 'string' ] . ''';
  3. ?>
Po co więc poraz kolejny oto samo pytac?
Go to the top of the page
+Quote Post
Jarod
post
Post #16





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(nospor @ 2006-04-10 14:42:47)
dr_bonzo pare postow wyzej podal jak to powinno byc prawidlowo:
  1. <?php
  2. $query = 'SELECT * FROM tabela WHERE imie='' . $_POST[ 'string' ] . ''';
  3. ?>
Po co więc poraz kolejny oto samo pytac?

Raczej
  1. <?php
  2. $query = 'SELECT * FROM tabela WHERE imie='' . $_POST['string'] . '';';
  3. ?>
Go to the top of the page
+Quote Post
AxZx
post
Post #17





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


a tak nie lepiej?
  1. <?php
  2. $query = 'SELECT * FROM tabela WHERE imie="' . $_POST['string'] .'"';
  3. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@J4r0d a jaka jest roznica miedzy kodem co podalem (a raczej dr_bonzo) a Twoim? Nie licząc tergo srednika na koncu, który jest zbędny, gdyż gdy wykonujemy zapytania z poziomu php, średników w zapytaniach nalezy unikac

@AxZx jest jakies takie zalecenie, ze w mysql lepiej stosowac apostrofów do napisów, anizeli cudzyslowów
Go to the top of the page
+Quote Post
Jarod
post
Post #19





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(nospor @ 2006-04-10 19:56:04)
(...)Nie licząc tergo srednika na koncu, który jest zbędny, gdyż gdy wykonujemy zapytania z poziomu php, średników w zapytaniach nalezy unikac(...)

Czytałem o tym. Ale nie widzę przeszkód żeby nie używać średników. W sqlu używa się więc moim zdaniem w skryptach też się powinno.

EDIT: Podobnie można się kłócić co jest poprawne

  1. <?php
  2.  
  3. echo "jakiś tekst";
  4.  
  5. ?>


czy

  1. <?php
  2.  
  3. echo 'jakiś tekst';
  4.  
  5. ?>


Wiadomo, że powinno się pisać pierwszym sposobem

Ten post edytował J4r0d 10.04.2006, 21:49:30
Go to the top of the page
+Quote Post
AxZx
post
Post #20





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


hehe a wlasnie ze nie bo drugim (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
a srednik nie jest konieczny
a skoro niejest konieczny to po co go uzywac?
w sql tez nie musisz dawac srednika na koncu
srednik na koncu oznacza koniec linii, a skoro masz jedno zapytania to nie trzeba pokazywac gdzie jest koniec linii, co innego gdyby byly 2 linie - 2 zapytania.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 22.08.2025 - 18:30