Мне нужно реализовать метод select()
который может связывать один или несколько параметров и другой метод, который возвращает результат в index.php.
Требуемый код, вызываемый из index.php:
echo $this->_results -> korisnik_id;
это класс базы данных, которому необходимо реализовать select()
. текущая функция Select()
принимает один параметр …
DB::getInstance() -> Select('SELECT korisnik_id FROM korisnici WHERE korisnik_ime= ?', 's', 'Alex');
… но не более:
DB::getInstance() -> Select('SELECT korisnik_id FROM korisnici WHERE korisnik_ime= ? AND korisnik_grupa= ?','si', 'Alex', '1');
полный класс:
<?php class DB{ private static $_instance = null; private $_stmt,$_query,$_error=false,$_results,$count=0; public function __construct() { try{ $this-> _stmt = new mysqli(Config::get('mysql/host'),Config::get('mysql/username'),Config::get('mysql/password'),Config::get('mysql/db')); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } } catch (Exception $ex) { } } public static function getInstance(){ if(!isset(self::$_instance)){ self::$_instance = new DB(); } return self::$_instance; } public function Select($query, $paramString = ''){ $stmt = $this->_stmt->prepare($query); if (func_num_args() > 2){ $parameters = func_get_args(); array_shift($parameters); // remove the query from the list // Array needs to be bound by reference foreach ($parameters as $key=>&$value) { $parameters[$key] = &$value; } call_user_func_array(array($stmt, "bind_param"), $parameters); } $stmt->execute(); $this->_results = $stmt->get_result(); $stmt->close(); $this->_results = $this->_results -> fetch_object(); echo $this->_results -> korisnik_id; } } ?>
Я думаю, ты довольно близко.
Как насчет чего-то подобного в месте вашего текущего цикла forach:
foreach ($parameters as $key=>&$value) { $this->_stmt->bindParam ($key, $value, PDO::PARAM_STR); }