Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Zapytanie SQL
dareksbs
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 17.10.2012

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


Witam,

Chcę wyciągnąć dane z bazy i nie mogę sobie przypomnieć polecenia SQL aktualnie mam takie :

  1. SELECT * FROM books WHERE id=".id."


Teraz opiszę co chcę zrobić, a więc mam bazę o nazwie Library w niej mam kategorię books i z kategorii books chcę wyciągnąć dane książek które będą wyłoływane przez id po przez metodę GET

czyli np. library.php?id=6

i wyrzuca książkę o id 6.

Jak mam sformułować dobrze pytanie SQL, bo te co napisałem wyżej nie działa
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Pjotrek80
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

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


Problem jest oczywiście w ".id."
tak pewnie zadziała: SELECT * FROM books WHERE id=$_GET['id'];
Ale oczywiscie nie możesz w ten sposób tworzyć zapytań. Prosisz się wtedy o ataki sql Injection.
Musisz $_GET['id'] przepuscić przez funkcje typu: strip_tags, htmlspecialchars, filter_var()
Go to the top of the page
+Quote Post
Mackos
post
Post #3





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Zapytanie wydaje sie ok, tylko zmienna powinna być czymś w stylu:
Cytat
id=".$id."

Jak wrzucasz zapytanie z parametrem z GET koniecznie pamiętaj o przefiltrowaniu parametru najpierw!
Go to the top of the page
+Quote Post
dareksbs
post
Post #4





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 17.10.2012

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


Cytat(Pjotrek80 @ 25.06.2013, 23:57:20 ) *
Problem jest oczywiście w ".id."
tak pewnie zadziała: SELECT * FROM books WHERE id=$_GET['id'];
Ale oczywiscie nie możesz w ten sposób tworzyć zapytań. Prosisz się wtedy o ataki sql Injection.
Musisz $_GET['id'] przepuscić przez funkcje typu: strip_tags, htmlspecialchars, filter_var()



Cytat(Mackos @ 25.06.2013, 23:59:21 ) *
Zapytanie wydaje sie ok, tylko zmienna powinna być czymś w stylu:

Jak wrzucasz zapytanie z parametrem z GET koniecznie pamiętaj o przefiltrowaniu parametru najpierw!


Ups, źle przepisałem na forum, oczywiście był tam znak $, lecz dalej nie działa... Co do wypowiedzi Pjotrek80, to zrobiłem nową zmienną z $_GET['id']; na $id, oczywiście będzie wszystko przepuszczonę przez htmlspecialchars.

Już naprawiłem, problemem było to że nie zrobiłem pętli przy wyciąganiu danych z bazy

Ale jeszcze mam małe pytanie, jak dopisać else do pętli ? tzn. jeśli ktoś wpiszę id którego nie będzie chciałbym aby wyrzuciło tekst "brak książki w bazie danych" próbowałem do bazy dopisać else ale nie działa

Ten post edytował dareksbs 25.06.2013, 23:23:39
Go to the top of the page
+Quote Post
Pjotrek80
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

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


Jeżeli używasz np mysqli, to pewnie piszesz coś takiego:
  1. if(mysqli_num_rows($dane) > 0){
  2. // w przypadku znalezienia informacji w bazie danych
  3. }else {
  4. // jeżeli nic nie znalazl
  5. }
Go to the top of the page
+Quote Post
dareksbs
post
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 17.10.2012

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


Cytat(Pjotrek80 @ 26.06.2013, 00:33:39 ) *
Jeżeli używasz np mysqli, to pewnie piszesz coś takiego:
  1. if(mysqli_num_rows($dane) > 0){
  2. // w przypadku znalezienia informacji w bazie danych
  3. }else {
  4. // jeżeli nic nie znalazl
  5. }


Ale ja jestem aktualnie w pętli, mam

  1. foreach ($books as $books) {
  2. echo '.$books['bookname'].'
  3. itp.
  4. }


I właśnie chciałem po tym dopisać else, ale nie działa
Go to the top of the page
+Quote Post
Pjotrek80
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

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


Cytat(dareksbs @ 26.06.2013, 00:41:22 ) *
Ale ja jestem aktualnie w pętli, mam

  1. foreach ($books as $books) {
  2. echo '.$books['bookname'].'
  3. itp.
  4. }


I właśnie chciałem po tym dopisać else, ale nie działa


Masz dwa razy books w pętli foreach (IMG:style_emoticons/default/smile.gif)
A do czego chcesz przypisać tutaj else?

Ten post edytował Pjotrek80 25.06.2013, 23:51:17
Go to the top of the page
+Quote Post
dareksbs
post
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 17.10.2012

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


Cytat(Pjotrek80 @ 26.06.2013, 00:49:24 ) *
Masz dwa razy books w pętli foreach (IMG:style_emoticons/default/smile.gif)
A do czego chcesz przypisać tutaj else?



Tak wiem bo pierwsze books to jest połączenie z bazą oraz wywołanie polecenia SQL a drugie books to zmienna poprzez którą będę wyciągał rzeczy z bazy, i wszystko ogólnie śmiga dobrze, ale chciałbym jeszcze dopisać jakoś else który by wyrzucał informację gdy ktoś wpiszę w GET id którego nie będzie w bazie
Go to the top of the page
+Quote Post

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 - 15:41