Wyszukiwanie w bazie po słowie kluczowym

Odpowiedz Nowy wątek
2011-10-23 11:32
0

Witam !

Mam, pewnie proste, pytanie.
mam formularz w którym wpisuję słowo po którym mam wyszukiwać w bazie artykułów
w formularzu wysyłam słowo funkcją POST z pola o nazwie "slowo"


<input type="text" name="slowo">

w pliku php wyszukiwania odbieram to słowo

 $slowo=$_POST[$slowo];

i wszystko jest ok słowo jest odbierane sprawdziłem przez


echo 'Wyszukiwane słowo to: '.$slowo;

ale teraz nie wiem jak wyszukać to słowo w bazie. Mam tabelę z artykułami gdzie ma pole id_tag i tabelę tagi gdzie mam pola id, nazwa. Napisałem zapytanie ale wywala mi cały czas błąd. Próbowałem już różnych sposobów ale nie działa

    $results = mysql_query ('
                        SELECT artykul.art_nr
                FROM artykul, tagi
                WHERE artykul.id_tag = tagi.id AND tagi.nazwa=$slowo
                '); 

pewnie to banał ale proszę o poradę

znalazłem przed chwilą coś takiego na necie ale też nie działa

    $results = mysql_query ('
                        SELECT artykul.art_nr
                FROM artykul, tagi
                WHERE artykul.id_tag = tagi.id AND tagi.nazwa LIKE '%$slowo%'
                ');

sql przykłady na anoncoPL kategoria sql
edytowany 1x, ostatnio: klimba, 2011-10-23 12:06

Pozostało 580 znaków

2011-10-23 14:32
0

"Nie dziala" to standardowo troche za malo. Zwykle oprocz "nie dziala" jest tez komunikat bledu opisujacy zwykle co konkretnie jest nie tak. W php mozesz go uzyskac przez funkcje mysql_error (o ile pamietam). W pierwszym zapytaniu nie dales slowa w apostrofy i parser sadzi, ze to slowo kluczowe a nie string. W drugim wyglada poprawnie na pierwszy rzut oka, choc logika zapytania jest nieco inna (pytasz o kazdy tag, ktory sklada sie z tego slowa, ktore wpisales, w pierwszym pytasz o ten i tylko ten tag).

Poza tym - kod ma powazny blad - pozwalasz na proste i oczywiste sql injection. Przed uzyciem slowa w zapytaniu uzyj np. mysql_real_escape_string.


You need to learn how to walk
before you can run
edytowany 1x, ostatnio: johny_bravo, 2011-10-23 14:33

Pozostało 580 znaków

2011-10-25 19:49
0

a co konkretnie Ci nie działa może byś bardziej to opisał


Ludzie uważają, że czas jest ważny, ponieważ sami go wymyślili.

Pozostało 580 znaków

2011-10-27 16:50
0

wyskakiwał że jest błąd w składni w linii 52 i tyle

rozwiązaniem okazało się zamiana pojedynczych apostrofów na podwójne w zapytaniu sql
z tego


$results = mysql_query ('
SELECT artykul.art_nr
FROM artykul, tagi
WHERE artykul.id_tag = tagi.id AND tagi.nazwa LIKE '%$slowo%'
                ');

na to


$results = mysql_query ("
SELECT artykul.art_nr
FROM artykul, tagi
WHERE artykul.id_tag = tagi.id AND tagi.nazwa LIKE '%$slowo%'
                ");

a o co chodzi z tym

mysql_real_escape_string. ??


sql przykłady na anoncoPL kategoria sql

Pozostało 580 znaków

2011-10-27 17:09
0

Już dostałeś odpowiedź, przeczytaj o sql injection!
Wystarczy że w textbox wpiszę: Bla;drop table users--
Czy coś w tym stylu.
Generalna zasada - nie ufaj danym pozyskanym od użytkownika, jeśli wprowadza je "z ręki" lub w inny sposób może je zmanipulować!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0