Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Prawidłowe zapytania, do bazy danych MySQL
nexis
post
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Witam,

jak powinny wyglądać prawidłowe zapytania do bazy danych MySQL?

Zwykle używam takich:

  1. <?php
  2. $query  = 'SELECT pole FROM tabela';
  3. $query  = mysql_query($query);
  4. $result = mysql_fetch_array($query);
  5. ?>


W zapytaniu nie ma zmiennych, więc używam: ' '.

Ale jak powinno wyglądać takie zapytanie (co w nim należy poprawić)?

  1. <?php
  2. $query  = "SELECT pole FROM tabela WHERE id = '$_GET['wartosc']'";  // wiem, że to jest źle
  3. $query  = mysql_query($query);
  4. $result = mysql_fetch_array($query);
  5. ?>


Ten post edytował nospor 11.04.2006, 08:28:02


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




zabezpieczenia przed atakami:
http://forum.php.pl/index.php?showtopic=23258

umiejetnosc wstawiania zmiennych do stringu:
http://pl.php.net/manual/pl/language.types.string.php
oraz
http://pl.php.net/manual/pl/language.operators.string.php
smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nexis
post
Post #3





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


W podanych przez ciebie przykładach nie było wzmianki o takim przypadku

  1. <?php
  2. $query = "SELECT pole FROM tabela WHERE id = '$_GET['wartosc']'";
  3. ?>


a jedynie o takim

  1. <?php
  2. $zmienna = $_GET['wartosc'];
  3. $query = "SELECT pole FROM tabela WHERE id = '$zmienna'";
  4. ?>


Ale po co dodawać kolejną linię kodu jak to na pewno można poprawić? Mogę prosić o poprawioną linijkę?


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Jakbys nie zauwazyl, to podalem ci jeszcze linki do manuali. zapoznaj sie z laski swojej z nimi, a bedziesz wiedzial jak to poprawic smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nexis
post
Post #5





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Czyli tak jest poprawnie?

  1. <?php
  2. $query = "SELECT pole FROM tabela WHERE id = '".$_GET['wartosc']."'";
  3. ?>


Teraz z kolei jak już zmienna nie jest bezpośrednio w wyrażeniu przydałoby się opuścić podwójny cudzysłów.

  1. <?php
  2. $query = 'SELECT pole FROM tabela WHERE id = ''.$_GET['wartosc'].''';
  3. ?>


Czy nadal jest coś źle?

Ten post edytował nexis 11.04.2006, 08:26:43


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




No jesli masz gdziesz ataki typu sql injection - to tak smile.gif a wzasadzie to prawie, gdyz zakladam ze id to liczba,a liczb w mysql nie bierze się w ciapki

  1. <?php
  2.  
  3. $query = 'SELECT pole FROM tabela WHERE id = '.((int)$_GET['wartosc']);
  4.  
  5. ?>

ale to wszytko bylo w linkach. wystarczylo zlozyc smile.gif

przenosze na przedszkole


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nexis
post
Post #7





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


A jeśli $id nie będzie liczbą i po warunku jeszcze będzie coś w zapytaniu, np.:

  1. <?php
  2. $query = 'SELECT pole FROM tabela WHERE id = ''.$_GET['wartosc'].'' ORDER BY id';
  3. ?>


To jest poprawne?

Ten post edytował nexis 11.04.2006, 08:35:01


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 18:12