Я пытаюсь использовать этот Wrapper и независимо от того, что я всегда получаю «boolean false», когда var_dump ($ row) в моем файле index.php.
Вот мой класс db:
<?php // database.php class DB { protected $_connection = array(); // to map the connection protected $_dbh; // property which keeps the database handler protected $_database; // property to keep the database name protected $_table; // property to keep the table name protected $_query; // property to keep a query statement public function __construct() { // require the database configurations as an array from config.php $this->_connection = require_once 'config.php'; // define which database driver to use (mysql?) and extract the values as // variables extract($this->_connection['connection']['mysql']); // make the database and table name available to the class $this->_database = $database; $this->_table = $table_name; // Check for PDO driver and create the connection to the database. try { $this->_dbh = new PDO($driver.":host=".$host, $username, $password); } catch (PDOException $e) { die ('Connection failed: ' . $e->getMessage()); } } public function input_query($query) { $this->_query = $this->_dbh->prepare($query); return $this; } public function execute() { return $this->_query->execute(); } public function single() { $this->execute(); return $this->_query->fetch(); } public function result_set() { $this->execute(); return $this->fetchAll(); } }
И затем в моем файле index.php:
<?php // index.php require_once 'database.php'; $db = new DB(); $db->input_query("SELECT `name` FROM `names` WHERE `id`=1"); $r = $db->single(); var_dump($r);
И если я это сделаю
<?php // index.php require_once 'database.php'; $db = new DB(); var_dump($db);
Я получаю объект:
object(DB)[1] public '_connection' => array (size=1) 'connection' => array (size=4) 'sqlite' => array (size=3) ... 'mysql' => array (size=6) ... 'pgsql' => array (size=6) ... 'sqlsrv' => array (size=6) ... protected '_dbh' => object(PDO)[2] protected '_database' => string 'pagination_demo' (length=15) protected '_table' => string 'names' (length=5) protected '_query' => null
Но var_dump ($ r) всегда возвращает логическое значение false, а иногда, когда я пытаюсь использовать разные вещи с кодом, я получаю «Вызов неопределенного метода DB :: single ()» или «метод для неъектного» типа сообщения.
Может ли кто-нибудь помочь мне разобраться в этом?
Большое спасибо. С уважением.
Хорошо, теперь он работает отлично. И вот код:
<?php // database.php class DB extends PDO { protected $_connection = array(); // to map the connection protected $_dbh; // property which keeps the database handler protected $_database; // property to keep the database name protected $_table; // property to keep the table name protected $_query; // property to keep a query statement public function __construct() { // require the database configurations as an array from config.php $this->_connection = require_once 'config.php'; // define which database driver to use (mysql?) and extract the values as variables extract($this->_connection['connection']['mysql']); // make the database and table name available to the class $this->_database = $database; $this->_table = $table_name; // build the dsn string value for the PDO connection $dsn = $driver.":host=".$host.";dbname=".$database; // Check for PDO driver and create the connection to the database. try { parent::__construct($dsn, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (PDOException $e) { die ('Connection failed: ' . $e->getMessage()); } } public function input_query($query) { $this->_query = parent::prepare($query); return $this; } public function execute() { return $this->_query->execute(); } public function single() { $this->execute(); return $this->_query->fetch(); } public function result_set() { $this->execute(); return $this->_query->fetchAll(); } }
И файл index.php:
<?php require_once 'database.php'; $db = new DB(); $db->input_query("SELECT `name` FROM `names`"); try { $r = $db->result_set(); } catch (PDOException $e) { die ($e->getMessage()); } var_dump($r);
И var_dump ($ r) дал мне целую кучу имен.
Спасибо, ребята, за вашу помощь!