Wątek przeniesiony 2015-01-23 09:28 z PHP przez dzek69.

Czym jest spowodowany błąd "mysql_num_rows() expects parameter 1 to be resource"?

0

Witam,
Otóż mam taki błąd:

mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp1\htdocs\PrawdaFalsz\reg.php on line 10

Którego zupełnie nie rozumiem, czym jest spowodowany.

$connect = mysqli_connect("localhost","root","LoL","logowanie");
    
    $login = mysqli_real_escape_string($connect, $_POST['login']);
    $haslo = mysqli_real_escape_string($connect, $_POST['haslo']);
    $email = mysqli_real_escape_string($connect, $_POST['e-mail']);
    $haslo1 = mysqli_real_escape_string($connect, $_POST['haslo1']);
    

    if (mysql_num_rows(mysql_query($connect,"SELECT login FROM users WHERE login = '".$login."';")) == 0)
    {
        if (mysql_num_rows(mysql_query($connect,"SELECT emial FROM users WHERE email = '".$email."';")) == 0)

a przeglądarka wyświetla takie błędy i w ogóle nie sprawdza tabeli, bo wszystkich uzytkowników zapisuje mi do :

Warning: mysql_query() expects parameter 1 to be string, object given in C:\xampp1\htdocs\PrawdaFalsz\reg.php on line 10

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\xampp1\htdocs\PrawdaFalsz\reg.php on line 10

Warning: mysql_query() expects parameter 1 to be string, object given in C:\xampp1\htdocs\PrawdaFalsz\reg.php on line 12

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\xampp1\htdocs\PrawdaFalsz\reg.php on line 12

dodanie znaczników <code class="none"> - @furious programming

2

Chyba nie znasz angielskiego, więc Ci przetłumaczę:

mysql_num_rows oczekuje by parametr 1 był ZASOBEM, otrzymano BOOLa.

Czyli wychodzi na to, że mysql_query zwrócił BOOLa - poprzez var_dump, nawet zobaczysz jakiego, a w dokumentacji http://php.net/mysql_query sprawdzisz kiedy mysql_query zwraca BOOLa.

Dodatkowo masz drugi warning, który Ci podpowiada:
mysql_query oczekuje, by pierwszy parametr był STRINGIEM, otrzymano OBIEKT.

Patrząc na kod - $connect to mi nie wygląda na stringa. I znowu - zaglądając do dokumentacji - zobaczysz jakie parametry powinieneś przekazywać, wraz z przykładami.

Druga rzecz - raz stosujesz funkcje mysqli_ ("i" na końcu), a raz mysql_ - one NIE SĄ ZAMIENNE.

0

ooo trafna uwaga!
Zamiana mysql_ na mysqli_ pomogła :) Wielkie dzięki !
Tylko teraz pytanie, jaka jest różnica? Wyczytałam że mysqli_ jest nowszym modułem od mysql_ i wykorzystuje obiektową składnię. Współpracuje z bazą danych MySQL w wersji 4.1.3 lub wyższej. Czymś jeszcze się różni? Istnieją przypadki kiedy można tego używać a kiedy nie?
Zasada działania jest podobna?

`zamiana znaczników na ``` - @furious programming

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