Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysqli i dziwny blad
Forum PHP.pl > Forum > PHP
dzesi
Witam mam problem z pdo mianowicie pokazuje mi błąd Call to a member function query() on a non-object in ze nie ma obiektu query .

  1. <?php
  2. $zapytanielog = "SELECT * FROM `user` WHERE login='" .$this->login. "'";
  3. //tu pokazuje bląd czy cos robie nie tak ?$sprawdzlog = $polacznie->query($zapytanielog);
  4.  if($sprawdzlog->num_rows($sprawdzlog) > 0)
  5. ?>
sticker
pokaż cały kod ale zakładam że nie utworzyłeś instancji obiektu mysqli
dzesi
No jak nie przecież jest łaczy sie itd tylko wywala nadal blad nie wiem co jest nie tak
  1. <?php
  2.  
  3.  public function polaczenie()  {
  4. $polaczenie = new mysqli(CONNECT,USER,PASSWORD,DATABASE);
  5. if (mysqli_connect_errno())
  6. {
  7. echo "Blad nie mozna polaczyc sie z baza danych ".mysqli_connect_error();
  8. exit();
  9. }
  10.  
  11.  }
  12. ?>
nevt
no oto w funkcji polaczenie() ładnie inicjujesz połaczenie z bazą, a rezultat przypisujesz do zmiennej lokalnej która nie jest widoczna w reszcie kodu...
jeżeli chcesz się odwołać do zmiennejj globalnej $połączenie (niewskazane), to musisz dodać linijkę:
  1. <?php
  2. public function polaczenie()  {
  3. global $polaczenie;
  4. $polaczenie = new mysqli(CONNECT,USER,PASSWORD,DATABASE);
  5. ?>

ale najlepiej, zebyś tego nie robił w ten sposób... dużo lepiej będzie jak zrobisz:
  1. <?php
  2. public function polaczenie()  {
  3.  return new mysqli(CONNECT,USER,PASSWORD,DATABASE);
  4. }
  5.  
  6. $polaczenie = polaczenie();
  7. ?>
dzesi
he a dla czego niby przez returm zwracanie , tak jak ja robie jest nie poprawnie ?( dodam ze korzystam z manuala i tam jest tak pokazane)
jak daje return i potem ma byc to wywołane poza klasa czy w klasie $start->$polaczenie=polaczenie(); ? za bardzo nie rozumie dlaczego przypisywać zmienna do funkcji przecież to tak nic nie daje bo nadal dostaje błąd ze nie nie ma obiektu queery ?
Prosze o pomoc w tej sprawie worriedsmiley.gif

Dedalem global i teraz w tej funkcji pokazuje mi ten sam błąd
  1. <?php
  2. public function sprawdzanie_user($login) {
  3.  //Sprawdzanie czy uzytkownik znajduje sie w bazie 
  4.  $zapytanielog = "SELECT * FROM `user` WHERE login='" .$this->login. "'";
  5.  $zapytanieuser = $polaczenie->query($zapytanielog);
  6. $num_rows=$zapytanieuser->num_rows > 0 ;
  7. ?>

Może cos jest z zapytaniem ? , ale nie powinno być żle
nevt
bo w funkcji sprawdzanie_user($login) też musisz musisz zarejestrować zmienną globalną... weź w maualu poszukaj sobie i uważnie poczytaj rozdział o zasięgach nazw zmiennych i funkcji...

Wybacz, ale jeśli masz podręcznik w którym uczą, że należy operować na zmiennych globalnych z wnętrza funkcji lub metod obiektów - to weź ten podręcznik pod pachę - wyjdź na trawniczek przed blok / domek i zrób sobie z niego ognisko - wtedy będzie z tego przynajmniej jakiś pożytek...
dzesi
Wiesz przestań mi tu p(.. worriedsmiley.gif ) farmazony tylko byś mógł podać roziwiazanie dlaczego tak sie dzieje ?
w manualu nic nie jest napisane ze do mysli trzeba dawać globalne zmienne ,I dlaczego mam poprawny kod a on nie działa czy to jakiś bug ?.I zapomniałeś chyba po co jest to forum po to żeby pomagać innym jak maja z czymś problem , a nie najłatwiej opisać to i sie wymądrzać
nevt
Cytat(dzesi @ 22.01.2008, 13:27:31 ) *
Wiesz przestań mi tu p(.. worriedsmiley.gif ) farmazony tylko byś mógł podać roziwiazanie dlaczego tak sie dzieje ?
w manualu nic nie jest napisane ze do mysli trzeba dawać globalne zmienne ,I dlaczego mam poprawny kod a on nie działa czy to jakiś bug ?.I zapomniałeś chyba po co jest to forum po to żeby pomagać innym jak maja z czymś problem , a nie najłatwiej opisać to i sie wymądrzać

kolego miły inaczej... to nie MÓJ problem, że używam KIEPSKIEGO podręcznika, tylko TWÓJ...
oczywiście, że jednym z celów tego forum jest pomoc innym... no i chyba dostałeś rozwiązanie - właściwe podane na tacy ...
ale TY się upierasz, że musi działać tak jak jest w TWOJEJ książce...
słuchaj - tego typu pretensje spisz sobie i wyślij do atora tej wybitnej publikacji...
a ja się nie wymądrzam - tylko nie bardzo mam ci jak pomóc, skoro nie rozumiesz czym się różni zmienna globalna od lokalnej... nie rozumiesz dlaczego lepiej jest kiedy funkcje i metody nie używają zmiennych globalnych... wybacz, mogę pomóc ci rozwiązać konkretny błąd ale nie licz na wykłady z podstaw programowania.
uspokuj się i poszukaj innej książki / manuala - w sieci masz tego mnóstwo...
nevt
skoro
Cytat
Po pierwsze nie zużywam już książek tylko manual i to co znajdę w sieci .Po drugie to nie jestem początkujący , nie wiem na jakiej podstawie to stwierdziłeś .

tak doświadczony programista z pewnością bez problemu znajdzie odpowiedź na to dziecinnie proste pytanie w swoim doskonałym manualu. ja dotychczas nie spotkałem takiego manuala w którym nie byłoby omówienia przestrzeni nazw i zasięgów zmiennych - może twój manual wyznacza jakieś nowe trendy i standardy ?
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.