Wyszukiwanie w bazie po słowie kluczowym

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%'
                ');
 
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.

0

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

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. ??

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ć!

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