Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błąd mysql_fetch_array()
Forum PHP.pl > Forum > Przedszkole
porywacz
Witam, napisałem proste logowanie w php ale wywala mi taki błąd:
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\Program Files\WebServ\WebServ\httpd-users\xxcheats\zaloguj.php on line 19


Tu jest kod:
  1. <?php
  2. $login = $_POST['login'];
  3. $haslo = $_POST['haslo'];
  4. $login = addslashes($login);
  5. $haslo = addslashes($haslo);
  6. $login = htmlspecialchars($login);
  7.  
  8. include('connect_mysql.php');
  9.  
  10. if(isset($login) && isset($haslo) && !empty($login) && !empty($haslo)) {
  11. $users_first = mysql_query("select COUNT(*) from `uzytkownicy` where `login` == `real_escape_string($login)` and `haslo` = `$haslo`");
  12. $users = mysql_fetch_array($users_first, MYSQL_NUM);
  13.  
  14. if(!$users[id] < 0) {
  15. $_SESSION['login'] = $login;
  16. $_SESSION['haslo'] = $haslo;
  17.  
  18. echo('Pomyślnie zalogowałeś się jako<font color="red">'.$login.'</font>.');
  19. } else {
  20. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  21. }
  22. } else {
  23. echo('Logowanie nie powiodło się, musisz wypełnić wszystkie pola!');
  24. }
  25. ?>


Z góry dziękuję za pomoc smile.gif
Ruch Radzionków
  1. $users_first = mysql_query("select COUNT(*) from `uzytkownicy` where `login` = `real_escape_string($login)` and `haslo` = `$haslo`");
xxdrago
Wklej to zapytanie:
  1. "select COUNT(*) from `uzytkownicy` where `login` == `real_escape_string($login)` and `haslo` = `$haslo`"

do php my admin i zobacz czy działa. PS: masz bład w zapytaniu tutaj : `login` == ma być tylko raz =
porywacz
Nadal nie działa : ( Ten sam błąd wyskakuje :/
xxdrago
Nauczę cię prostej techniki:

robisz tak:
  1. $zap = "select COUNT(*) from `uzytkownicy` where `login` == `real_escape_string($login)` and `haslo` = `$haslo`";
  2. echo $zap;
  3. $users_first = mysql_query($zap);

Wklejasz to co ci wyświetla zmienna $zap do phpmyadmin i pokazuje ci co masz źle.


http://phpedia.pl/wiki/Supplied_argument_i...result_resource
porywacz
Już wiem co było źle w zapytaniu, ale poprawiłem i nadal nie działa ;d

Teraz mam tak:
  1. <?php
  2. $login = $_POST['login'];
  3. $haslo = $_POST['haslo'];
  4. $login = addslashes($login);
  5. $login = htmlspecialchars($login);
  6. $haslo = md5($haslo);
  7.  
  8. include('connect_mysql.php');
  9.  
  10. if ($_GET['login'] != '') { //jezeli ktos przez adres probuje kombinowac
  11. }
  12. if ($_GET['haslo'] != '') { //jezeli ktos przez adres probuje kombinowac
  13. }
  14.  
  15. if(isset($login) && isset($haslo) && !empty($login) && !empty($haslo)) {
  16. $users = mysql_fetch_array(mysql_query("select count(*) from `uzytkownicy` where `login` = '$login' and `haslo` = '$haslo'"));
  17. if($users[0] > 0) {
  18. $_SESSION['login'] = $login;
  19. $_SESSION['haslo'] = $haslo;
  20.  
  21. echo('Pomyślnie zalogowałeś się jako<font color="red">'.$login.'</font>.');
  22. } else {
  23. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  24. }
  25. } else {
  26. echo('Logowanie nie powiodło się, musisz wypełnić wszystkie pola!');
  27. }
  28. ?>


Teraz w php my admin nie wyświetla błędu ale nadal mi nie działa logowanie ;o Kto może wie czemu? ;/

Wyświetla mi się komunikat Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś pola. A na pewno wprowadzam poprawne dane; *(
xxdrago
Daj tabele oraz rekordy z bazy danych.

  1. if($users[0] > 0) {

Po co tak komplikować sobie życie?

Lepiej jest zrobić tak :
  1. if($users[0] = 1) {
porywacz
Ok, twoja metoda zadziałała, loguję się... Tylko, że loguje się nie zależnie od tego, co wpiszę w pola login i hasło ;d Mogę wpisać nawet "jf234hr9f8shdfji42hrt098hsdfljkagfulksdahf" a i tak się zaloguje... sad.gif

Ktoś pomoże? Cały dzień dzisiaj kombinuję z tym skryptem i nadal nie wiem co jest nie tak ;/
Gość
xxdrago chodziło zapewne o warunek
  1. if($users[0] == 1) {
porywacz
if($users[0] == 1) {

}
Też nie działa ;d Teraz wgl mnie nie loguje nawet jak wpisuje dobre dane sad.gif
Gość
spróbuj z tym zapytaniem i tym warunkiem
  1. $users = mysql_num_rows(mysql_query("select count(*) from `uzytkownicy` where `login` = '".$login."' and `haslo` = '".$haslo."'"));
  2.  
  3. if($users == 1) {
  4.  
  5. }
porywacz
Teraz znowu loguje na każdym loginie i haśle :/
xxdrago
Kurde dasz w końcu swoją tabele ?

  1. if ($_GET['login'] != '') { //jezeli ktos przez adres probuje kombinowac
  2. }
  3. if ($_GET['haslo'] != '') { //jezeli ktos przez adres probuje kombinowac
  4. }

Ciekawe... Nie wpadłbym na to ... snitch.gif


  1. isset($login) && isset($haslo) && !empty($login) && !empty($haslo


if ($_POST['login'] && $_POST['haslo'])
{
}

Zrób sobie tak bo jak widzę jak kombinujesz to aż płakać się chcę łatwiej będzie...

zamiast count lepiej zastosować jest http://php.net/manual/en/function.mysql-num-rows.php
porywacz
Chodzi ci o table z bazy danych?
Here:

Rekordy nie wiem po co ci ale masz:


Już nie wiem czy będzie mi to kiedyś działało czy nie ;D
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.