Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] błąd:Fatal error: Call to a member function real_escape_string() on a non-object
Forum PHP.pl > Forum > PHP
lamcpp
Witam tutaj kawałek kodu:
  1. <?
  2. function check_login($email = '',$haslo = '')
  3. {
  4.  
  5. require_once('baza.php');
  6. $errors = array();
  7. if(empty($email))
  8. {
  9. $errors[] = 'Zapomniałeś wprowadzić adres e-mail<br />';
  10. }
  11. else
  12. {
  13. $e = $objekt5->real_escape_string(trim($email));
  14. }
  15.  
  16. if(empty($haslo))
  17. {
  18. $errors = "Zapomniałeś wprowadzić hasła<br />";
  19. }
  20. else
  21. {
  22. $p = $objekt -> real_escape_string(trim($haslo));
  23. }
  24.  
  25. if(empty($errors))
  26. {
  27. $query = "SELECT id,imie,nazwisko,login,wiek,email FROM user WHERE email='$email' AND haslo=SHA1('$haslo')";
  28. $wynik = $objekt -> query($query);
  29. if($wynik ->num_rows == 1)
  30. {
  31. $row = mysqli_fetch_array($wynik,MYSQLI_ASSOC);
  32. return array(true,$row);
  33. }
  34. else
  35. {
  36. $errors[] = 'Twoje dane róznią się od danych wpisanych w bazie<br />';
  37. }
  38. }
  39. return array(false,$errors);
  40. }
  41. ?>


oraz plik z bazą:
  1. <?php
  2. define('SERWER','localhost');
  3. define('UZYTKOWNIK','root');
  4. define('HASLO','haselko');
  5. define('BAZA','ai');
  6.  
  7. $objekt = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  8. $objekt2 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  9. $objekt3 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  10. $objekt5 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  11.  
  12. if(mysqli_connect_errno())
  13. {
  14. printf("Nie udało się połączyć z bazą danych. Spróbuj ponownie później. %s\n",mysqli_connect_error());
  15. exit();
  16. }
  17. ?>


Błąd który wystepuje to:
Cytat
Fatal error: Call to a member function real_escape_string() on a non-object in D:\usr\ang\funk_logowania.php on line 23

Dotyczy tej linikii: $e = $objekt5->real_escape_string(trim($email));
Nie rozumiem co tu jest nie tak? objekt został wczesniej zdefiniowany przecież (w pliku baza). więc jak wskazuje na nie-objekt?
jest jeszcze przypisanie do zmiennej $e ale jesli wymarze ten kawałek "$e=" to błąd jest taki sam.
Proszę o pomoc
erix
A puść sobie var_dump na zmienną uchwytu klasy i sam zobacz.

BTW:
  1. $objekt = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  2. $objekt2 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  3. $objekt3 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  4. $objekt5 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);

Jaki to ma sens?
phpion
Cytat(erix @ 10.09.2009, 21:01:53 ) *
  1. $objekt = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  2. $objekt2 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  3. $objekt3 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);
  4. $objekt5 = new mysqli(SERWER,UZYTKOWNIK,HASLO,BAZA);

Jaki to ma sens?

Pewnie chodzi o bezpieczeństwo. Gdyby którykolwiek obiekt się nie utworzył to inny będzie dostępny.

laugh.gif
lamcpp
no dobra, rozumiem że MUSI być tylko jeden uchwyt?
czy uchwyt w tym przypadku nie równa się obiekt?
bo chciałbym miec parę obiektów klasy MySQLI.... stąd te kilka obiektów...
erix
Cytat
Gdyby którykolwiek obiekt się nie utworzył to inny będzie dostępny.

Ta, a 7 samolotów leci szybciej niż jeden.

Cytat
czy uchwyt w tym przypadku nie równa się obiekt?

Owszem, równa się. Ale w Twoim przypadku jest coś nie tak i nie jest obiektem, na co wskazuje ten błąd.

Cytat
bo chciałbym miec parę obiektów klasy MySQLI.... stąd te kilka obiektów...

Ale po co, skoro ten sam serwer? biggrin.gif
phpion
Czy chodząc używasz różnych par butów do wykonania każdego kroku? Nie. Tak samo i w tym przypadku: do wykonywania zapytań w zupełności wystarczy Ci 1 obiekt. Powołanie nowego obiektu jest uzasadnione, gdy chcesz skorzystać z kilku baz jednocześnie.
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.