[mysql] problem z wyszukiwaniem


(Maciej Szankin) #1

Nie mam zielonego pojęcia czy jest poprawne (zapewne nie jest), skopiowałem skrpyt wyświetlania całej bazy i dodałem warunek, ale wywala błędy

mysql_num_rows(): supplied argument is not a valid MySQL result resource

mysql_fetch_array(): supplied argument is not a valid MySQL result resource

kod:

$szukaj = $_POST['szukaj'];

								echo ("$szukaj");

								$link = mysql_connect("$host","$user","$pw");

								mysql_query("SET NAMES latin2");

								mysql_query("SET CHARSET latin2");

								mysql_select_db("$db");


								$query = 'SELECT * FROM urodziny WHERE osoba='.$szukaj;

								$result = mysql_query($query);

								mysql_query("SET NAMES latin2");

								mysql_query("SET CHARSET latin2");

								$ilosc = mysql_num_rows($result);

								echo("Liczba odpowiedzi: $ilosc");


								echo("

| id | osoba | wiek | data urodzenia |
| $row[id] | $row[osoba] | $wiek | $row[dzien].$row[miesiac].$row[rok] |

"); mysql_close($link);[/code] [/code]


(Kutar 0) #2
$query = 'SELECT * FROM urodziny WHERE osoba="'.$szukaj.'"';

i poczytaj to: http://pl.wikipedia.org/wiki/SQL_injection

@EDIT:

A czy gdzieś napisałem, że powoduje? Najpierw podałem rozwiązanie problemu, a potem zwróciłem uwagę przy okazji na SQL injection :stuck_out_tongue:


(Mahsoft) #3

albo

$query = 'SELECT * FROM urodziny WHERE osoba=\''.$szukaj.'\'';

i

echo("".$row[id]."".$row[osoba]."".$wiek."".$row[dzien].$row[miesiac].$row[rok]."");

(Airborn) #4

SQL Injection oczywiście jest błędem, ale to nie to powoduje błędy działąnia wspomnianych przez Sharapova funkcji.

sprawdź, czy serwer w ogóle łączy się z bazą i wybiera tabelę, odpowiednio:

$link = mysql_connect($host, $user, $pw") or die("Nie udało się połączyć z serwerem ".mysql_error());

oraz

mysql_select_db($db) or die("Nie udało się wybrać bazy ".mysql_error());

(Maciej Szankin) #5

maciejowiec86 wg Twojego schematu działa ładnie.

Poczarowałem jeszcze trochę z addslashes i powinno być w porządku. Dzięki wszystkim.