Sharapova
(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
(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
albo
$query = 'SELECT * FROM urodziny WHERE osoba=\''.$szukaj.'\'';
i
echo("".$row[id]."".$row[osoba]."".$wiek."".$row[dzien].$row[miesiac].$row[rok]."");
Airborn
(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());
Sharapova
(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.