Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] klasa logowania z wykorzystaniem PDO
wjkbdg
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.06.2007
Skąd: bdg

Ostrzeżenie: (0%)
-----


Witam,

mam sobie zapoczątkowaną klasę Login.

  1. <?php
  2. include_once("config.php");
  3.  
  4. class Login 
  5. {
  6. var $username;
  7. var $password;
  8.  
  9. public function __construct()
  10. {
  11. $this->connectToMysql();
  12. if(!isset($_SESSION['auth']))
  13. {
  14. $_SESSION['auth'] = 0;
  15. }
  16. }
  17.  
  18. public function connectToMysql()  
  19. {
  20. $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', ''.DB_USER.'', ''.DB_PASS.'', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  21. }
  22.  
  23. public function userRegistration($username, $password, $email)
  24. {
  25.  //$this->connectToMysql();
  26.  //$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', ''.DB_USER.'', ''.DB_PASS.'', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  27.  $stmt = $pdo -> prepare('INSERT INTO `users` (`username`, `password`, `email`) VALUES(
  28. :username,
  29. :password,
  30. :email)');  
  31.  
  32. $stmt -> bindValue(':username', $username, PDO::PARAM_STR);
  33. $stmt -> bindValue(':password', $password, PDO::PARAM_STR);
  34. $stmt -> bindValue(':email', $email, PDO::PARAM_STR);
  35.  
  36. if($registration = $stmt -> execute())
  37.  {
  38.  echo "Użytkownik ".$_POST['username']." został zarejestrowany.<br/><a href='index.php'>Strona główna<a/>";
  39.  }
  40. }
  41. }
  42. ?>


Zawiera ona metodę connectToMysql, która wykonywana jest w konstruktorze i działa ok - łączy się z bazą.
Problem pojawia się w chwili rejestracji nowego użytkownika i brzmi tak:
  1. Fatal error: Call to a member function prepare() on a non-object in E:\httpd\rowery\lib\class_login.php on line 28


Ta informacja zbija mnie trochę z tropu, bo przecież obiekt PDO jest tworzony w konstruktorze.
Dodanie w metodzie userRegistration
  1. <?php
  2. $this->connectToMysql();
  3. ?>

również nie pomaga, a chyba powinno. Czy czegoś nie rozumiem?

Poprawnie wykonane zapytanie jest tylko w przypadku dodania:
  1. <?php
  2. $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', ''.DB_USER.'', ''.DB_PASS.'', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  3. ?>



Moje pytanie brzmi dlaczego utworzony w konstruktorze obiekt PDO nie funkcjonuje w metodach tej klasy i trzeba tworzyć go ponownie?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:48