Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]"...mysqli_num_rows() expects parameter..." o co biega?
Forum PHP.pl > Forum > Przedszkole
nekomata
Witam, niedawno wystartowałem z nauką php i właśnie próbuje zrobić prosty skrypt rejestracji. jednak napotykam się z błędem

  1. Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in X:\xampp\htdocs\testowo\register.php on line 50

a plik register.php wygląda tak
  1. <?php
  2. echo'<div id="part"> Registration<div id="kreska"></div>
  3. <div id="windowcontent">';
  4.  
  5. if(!isset($_POST['nickname']))
  6. {goto a;}
  7.  
  8. require_once('mysqli_connect.php');
  9.  
  10. if(isset($_POST['nickname']))
  11. {
  12. $trimmed = array_map('trim',$_POST);
  13. $nickname = $email = $password = FALSE;
  14.  
  15. //Sprawdza login
  16.  
  17. ('/^[A-ZA-Z]{2,25}$/i',$trimmed['nickname'])){
  18. $nickname = mysqli_real_escape_string($dbc,$trimmed['nickname']);}
  19. else{
  20. echo '<error>Please use letter from A to Z , numbers not allowed.Nickname allowed from 2 to 25 characters</error>';
  21. }
  22.  
  23. //Sprawda Email
  24.  
  25. if(preg_match('/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/i', $trimmed['email']))
  26. {
  27. $email = mysqli_real_escape_string($dbc,$trimmed['email']);
  28. }
  29. else{
  30. echo '<error>Please input correct email adress.</error>';
  31. }
  32.  
  33. //Sprawdza hasło
  34. if(preg_match ('/^\w(4,20)$/',$trimmed['password']))
  35. {
  36. if ($trimmed['password'] == $trimmed['passwordr'])
  37. {
  38. $password = mysqli_real_escape_string ($dbc,$trimmed['password']);
  39. }
  40. else {
  41. echo'<error>Passwords doesnt match each other.</error>';
  42. echo'Please inpute password from 4 to 20 characters.</eroor>';
  43. }}
  44. if ($nickname && $password && $email){
  45. $qx = "SELECT user_id FROM users WHERE email='" . $username . "'";
  46. $rx = mysqli_query($dbc, $qx);
  47. }
  48.  
  49. $rows = mysqli_num_rows($rx);
  50. if ($rows < 1) {
  51. $a = md5(uniqid(rand(), true));
  52. $q = "INSERT INTO users (email,pass,nickname,activated,registration_date)
  53. Values ('$email','$password','$nickname','$a',NOW() )";
  54. $r = mysqli_query($dbc, $q) or trigger_error ("Zapytanie $q\n<br/>Wywalilo blad : " .mysqli_error($dbc));
  55. if(mysqli_affected_rows($dbc) == 1 ) {
  56. $body = "Thank you for registering at our site.To activate your account just click the link at the bottom\n\n";
  57. $body .= BASE_URL . 'activate.php?x=' . urlencode($email) . "&y=$a";
  58. //mail($trimmed['email'], 'testing-zone.com Activation link.' ,$body, 'from:Admin@downloading-zone.com');
  59. echo '<h3>Thank you for Registering at our site!<br/>Activation email has been sent to'.$email.'</h3>';
  60. }}
  61. else{
  62. echo '<error>For some reason we couldnt register your account.Sorry for problems.</error>';
  63. }
  64.  
  65. a:
  66.  
  67. include('form.html');
  68. }
  69. ?>
  70.  


Po dwoch godzinach googlowania nie mogę załapać o co chodzi.Dodam ze przykład wygląda praktycznie tak samo w książce "Larry Ullman - php 6 i mysql 5 dynamiczne strony www"

BTW. Pierwszy post chciałbym się serdecznie z wszystkimi przywitać a dodatkowo chciałbym podziękować kilku osoba bez których bym się tu nieznalazl a mianowicie "Moim rodzina którzy byli dla mnie zawsze oparciem i przyjaciołom ze szkoły którzy zawsze się ze mnie naśmiewali ......(300 osób dalej) ... chciałbym podziękować tez wujkowi Google oraz (250 osób ) i pani z warzywniaka - te ziemniaki były naprawdę dobre.Tak to chyba wszyscy dziękuje za uwagę.
nospor
Masz bład zapytania. Tu masz napisane jak diagnozować takie bledy:
Temat: Jak poprawnie zada pytanie
nekomata
Natknąłem się na to już wcześniej jednak nadal nie mogę zanalizować o co biega z tym błędem....
przy princie $rx nie pojawia sie nic nowego na ekranie(przy echo z reszta tez) wiec nie wiem ocb dalej.
nospor
Chodzilo o ten kawałem z mysql_error()... Przecież tam po polsku jest napisane i podane są przyklady...

1) Wlacz wyswietlanie wszystkich bledow (masz w linku napisane jak)
2) Wlaczy mysql_error()
3) mysqli_query() robisz warunkowo, ale już mysqli_num_rows() robisz bezwarunkowo. Nie daje ci to nic do myslenia?
nekomata
Chyba sobie poradzilem, dzieki.Teraz jedna rzecz mnie nurtuje niby wszystko jest ok ale wyskakuje "BŁĄDz:" (z dla oznaczenia ktore)a po nim nic.Dziwna rzecz,wie ktoś może czemu tak jest?
blad wyskakuje w miejscue zastosowania
  1. mysql_query($sql) or die('BŁĄD:'.mysql_error());


poprawiony kod wyglada tak a
bladz w linijce 52
  1. <?php
  2.  
  3. ini_set('display_errors','1');
  4.  
  5. echo'<div id="part"> Registration<div id="kreska"></div>
  6. <div id="windowcontent">';
  7.  
  8. if(!isset($_POST['nickname']))
  9. {goto a;}
  10. require_once('mysqli_connect.php');
  11.  
  12. if(isset($_POST['nickname']))
  13. {
  14. $trimmed = array_map('trim',$_POST);
  15. $nickname = $email = $password = FALSE;
  16.  
  17. //Sprawdza login
  18.  
  19. ('/^[A-ZA-Z]{2,25}$/i',$trimmed['nickname'])){
  20. $nickname = mysqli_real_escape_string($dbc,$trimmed['nickname']);}
  21. else{
  22. echo '<error>Please use letter from A to Z , numbers not allowed.Nickname allowed from 2 to 25 characters</error>';
  23. }
  24.  
  25. //Sprawda Email
  26.  
  27. if(preg_match('/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/i', $trimmed['email']))
  28. {
  29. $email = mysqli_real_escape_string($dbc,$trimmed['email']);
  30. }
  31. else{
  32. echo '<error>Please input correct email adress.</error>';
  33. }
  34.  
  35. //Sprawdza hasło
  36. if(preg_match ('/^\w(4,20)$/',$trimmed['password']))
  37. {
  38. if ($trimmed['password'] == $trimmed['passwordr'])
  39. {
  40. $password = mysqli_real_escape_string ($dbc,$trimmed['password']);
  41. }
  42. else {
  43. echo'<error>Passwords doesnt match each other.</error>';
  44. echo'Please inpute password from 4 to 20 characters.</eroor>';
  45. }}
  46. if ($nickname != FALSE){
  47. $qx = "SELECT user_id FROM users WHERE email='" . $nickname . "'";
  48. $rx = mysqli_query($dbc, $qx) or die('BŁĄDx:'.mysql_error());
  49. }
  50. $rows = mysqli_num_rows($rx) or die('BŁĄDz:'.mysql_error());
  51. echo $rows;
  52. print($rows);
  53. if ($rows < 1) {
  54. $a = md5(uniqid(rand(), true));
  55. $q = "INSERT INTO users (email,pass,nickname,activated,registration_date)
  56. Values ('$email','$password','$nickname','$a',NOW() )";
  57. $r = mysqli_query($dbc, $q) or trigger_error ("Zapytanie $q\n<br/>Wywalilo blad : " .mysqli_error($dbc));
  58. if(mysqli_affected_rows($dbc) == 1 ) {
  59. $body = "Thank you for registering at our site.To activate your account just click the link at the bottom\n\n";
  60. $body .= BASE_URL . 'activate.php?x=' . urlencode($email) . "&y=$a";
  61. //mail($trimmed['email'], ' Activation link.' ,$body, 'from:Admin@downloading-zone.com');
  62. echo '<h3>Thank you for Registering at our site!<br/>Activation email has been sent to'.$email.'</h3>';
  63. }}
  64. else{
  65. echo '<error>For some reason we couldnt register your account.Sorry for problems.</error>';
  66. }
  67.  
  68. a:
  69.  
  70. include('form.html');
  71. }
  72. ?>
  73.  
nospor
Moj poprzedni post, punkt 1) oraz 3). Tam masz odpowiedź...
nekomata
Awww.... dzięki, szczerze mowiac jak przeczytałem warunkowanie to pomyślałem o if ale teraz rozumiem i wszystko śmiga. dzięki wielkie
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.