W programowaniu obiektowym dopiero zaczynam, już parę klas napisałem i działają wedle moich oczekiwań, ale mam problem z klasą którą sobie stworzyłem odpowiadającą za zarządzanie bazą danych.
Problem polega na tym, iż gdy wykonam np.
$pdo -> numRows('id', '`test` WHERE `name`="ala'"')
Dostaję błąd:
Fatal error: Call to a member function query() on a non-object in pdo_connect.class.php on line 29
Klasa wygląda następująco:
<?php class PDOconnect{ private $_user; private $_password; private $_name; private $_host; private $_tpl; private $_pdo; public function __construct($user, $password, $name, $host, $tpl){ $this->_user = $user; $this->_password = $password; $this->_name = $name; $this->_host = $host; try{ $pdo = new PDO('mysql:host='.$host.';dbname='.$name, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); } catch(PDOException $e){ exit; } $this->_pdo = $pdo; return $pdo; } public function numRows($count_from, $query){ $sql_numrows = $pdo -> query('SELECT COUNT(`'.$count_from.'`) AS `numrows` FROM '.$query.''); while($sql_numrows_row = $sql_numrows -> fetch()){ return $sql_numrows_row['numrows']; } } public function __destruct(){ $this->_pdo = null; } } ?>
Mogę prosić o jakieś rady co tutaj może być źle, ew. dopracować/poprawić?
Oczywiście przed wykonaniem jakiejś metody wykonuję:
require('pdo_connect.class.php'); $pdo = new PDOconnect(DB_1_USER, DB_1_PASSWORD, DB_1_NAME, DB_1_HOST, $tpl);
Za wszystkie odpowiedzi dziękuję!
Pozdrawiam.