Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie do bazy
Forum PHP.pl > Forum > Przedszkole
gajek
witam!
W zeszlym tygodniu kupilem sobie ksiazke php i MySQL tworzenie WWW. Ksiazka ladna z plytka i przykladami. No i jak to w wiekszosci przypadkow przyklady nie dzialaja. Dokladnie chodzi o ksiazke wydawnictwa Helion a przyklad z rozdzialu 26. zainstalowalem sobie Krasnala z php 5 i MySQL 3.23.58. No i nic tylko same problem. Mam problem z ponizsza funkcja rejestruj. W przegladarce mam wypisany nastepujacy blad
Cytat
Fatal error: Call to a member function mysql_query() on a non-object in c:\usr\krasnal\www\formularze\funkcje_uwierz.php on line 14


  1. <?php
  2.  
  3. require_once('funkcje_bazy.php');
  4.  
  5. function rejestruj($nazwa_uz, $email, $haslo)
  6. // zarejestrowanie nowej osoby w bazie danych
  7. // zwraca true lub komunikat o błędzie
  8. {
  9.  // połączenie z bazą danych
  10. $lacz = lacz_bd();
  11.  
  12. // sprawdzenie, czy nazwa użytkownika nie powtarza się
  13.  
  14. $wynik = $lacz->mysql_query(&#092;"select * from uzytkownik where nazwa_uz='$nazwa_uz'\");
  15. if (!$wynik)
  16.  throw new Exception('Wykonanie zapytania nie powiodło się.');
  17. if ($lacz->num_rows>0) 
  18.  throw new Exception('Nazwa użytkownika zajęta — proszę wrócić i wybrać inną.');
  19.  
  20. // jeżeli wszystko w porządku, umieszczenie w bazie danych
  21. $wynik = $lacz->mysql_query(&#092;"insert into uzytkownik values
  22.  ('$nazwa_uz', sha1('$haslo'), '$email')&#092;");
  23. if (!$wynik)
  24. throw new Exception('Rejestracja w bazie danych niemożliwa — proszę spróbować później.');
  25.  
  26. return true;
  27. }
  28. ?>



A tak wyglada po modyfikacjach plik funkcje_bazy.php

  1. <?php
  2.  
  3. function lacz_bd()
  4. {
  5.  $wynik=mysql_connect('localhost','root','krasnal');
  6.  
  7.  if (!$wynik)
  8. throw new Exception('Połączenie z serwerem bazy danych nie powiodło się');
  9.  else
  10. return $wynik;
  11. } ?>


Prubowalem wstaiac w 'mysql_connect('localhost','root','krasnal');' to wtedy wieszal mi sie przy prubie laczenia.
Prosze o pomoc
pzdr Gajek
crash
lacz_bd() to funkcja a nie klasa więc nie wykonujesz na wyniku jej działania operacji...
  1. <?php
  2. $baza = lacz_bd();
  3. // ...
  4. mysql_close($baza);
  5. ?>
gajek
a mogl bym prosic o jakies b prostrze wytlumaczenie questionmark.gif? bo nie wiem czy w takim ukladzie autor ksiazki popelnil blad questionmark.gif?
nospor
Może tak:
lacz_bd zwraca ci wynik funckcji mysql_connect, który nie jest obiektem. Ty nie stety ten wynik uzywasz jako obiektu (jesli nie wiesz co to obiekty to se poczytaj o nich).
Wystarczy zrobic tak jak napisal crashu

edit:
poszukalem w tej książce rozdzialu 26 (pewnie mam inne wydanie, ale to nie zmienia faktu). Autor tam nie uzywal skladni którą ty dales czyli:
$wynik = $lacz->mysql_query("select * from uzytkownik where nazwa_uz='$nazwa_uz'");
autor uzyl takiej skladni:
$wynik = mysql_query("select * from uzytkownik where nazwa_uz='$nazwa_uz'",$lacz);
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.