Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Zapytanie SQL
Forum PHP.pl > Forum > Przedszkole
dareksbs
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
Pjotrek80
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()
Mackos
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!
dareksbs
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
Pjotrek80
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. }
dareksbs
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
Pjotrek80
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 smile.gif
A do czego chcesz przypisać tutaj else?
dareksbs
Cytat(Pjotrek80 @ 26.06.2013, 00:49:24 ) *
Masz dwa razy books w pętli foreach 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
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.