|
|
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! У меня такая вот ошибка выскакивает: Код: php 1. А здесь строка c ошибкой: Код: php 1. 2. 3. Запрос такой: Код: php 1. Здесь наверное второй параметр у запросе указать нужно, но увы из за статуса новичок, не знаю какой Вот собственно весь код: 1. index.php require './blocks/db.php'; /*Соединяемся с базой*/ DB::getInstance(array('host'=>'localhost','login'=>'veshalka','password'=>'','db'=>'veshalka.com', 'type'=>'mysqli')); $result= DB::query("SELECT `first_name` FROM `user`"); echo '<h2>Таблица продуктов:</h2> <table border="1">'; while($obj=DB::fetch_object($result)){ echo '<tr><td>'.$obj->first_name.'</td><td>'.'</td><tr>'; } echo '</table>'; 2. класс для работы с базой - db.php /** * DB * * @uses $db = DB::getInstance(); * First use: $db = DB::getInstance(array('host'=>'localhost','login'=>'','password'=>'','db'=>'', 'type'=>'mysqli')); */ class DB{ /** * Module Instance for Singleton pattern * * @var DB */ static private $instance = null; /** * Singleton main method * * @param array $params * @return DB */ static function getInstance($params = false){ if (self::$instance == null){ self::$instance = new DB($params); } return self::$instance; } private function __clone() { } private function __wakeup() { } /** * Mysqli connection handler * * @var mysqli */ public $handler = null; /** * Mysqli statement handler * * @var mysqli_stmt */ protected $stmt = null; /** * Mysql result handler * * @var resource */ protected $result = null; /** * Stmt result keys * * @var arrays */ protected $keys = array(); /** * Stmt metadata * * @var mysqli_metadata */ /** * Database connect type * * @var string */ protected $meta = null; /** * Module constructor * * @param array $params */ public function __construct($params = false){ $this->connect_mysqli($params); $this->type = $params['type']; if (array_key_exists('encoding',$params)) $this->query("set names ".$params['encoding']); else $this->query("set names UTF8"); } /** * Connect to database - mysqli method * * @param array $params */ public function connect_mysqli($params){ if (!$params) throw new Exception('Params error'); if (!$this->handler = new mysqli($params['host'],$params['login'],$params['password'],$params['db'])) throw new Exception(mysqli_error()); } /** * Send query * * @param string $query * @param mixed(string,array) $params */ public function query($query, $params = false){ return $this->query_mysqli($query, $params); } /** * Send query - mysqli * * @param string $query * @param mixed(string,array) $params */ public function query_mysqli($query, $params = false){ $this->stmt = $this->handler->prepare($query); if (!$this->stmt){ throw new Exception(mysqli_error($this->handler)."\n\n".$query); } if ($params){ if (!is_array($params)) $params = array($params); array_unshift($params, str_repeat('s', count($params))); $refs = array(); foreach ($params as $i => &$f) $refs[$i] = &$f; call_user_func_array(array(&$this->stmt, 'bind_param'),$refs); } $this->stmt->execute(); $this->stmt->close(); return true; } /** * Execute query * * @param string $query * @param mixed(string,array) $params */ public function _execute($query,$params = false){ $this->stmt = $this->handler->prepare($query); if (!$this->stmt){ throw new Exception(mysqli_error($this->handler)."\n\n".$query); } if ($params){ if (!is_array($params)) $params = array($params); array_unshift($params, str_repeat('s', count($params))); $refs = array(); foreach ($params as $i => &$f) $refs[$i] = &$f; call_user_func_array(array(&$this->stmt, 'bind_param'),$refs); } $this->stmt->execute(); $this->meta = $this->stmt->result_metadata(); $this->keys = array(); foreach ($this->meta->fetch_fields() as $col) $this->keys[] = $col->name; $this->stmt->store_result(); } /** * Fetch results * * @return array */ public function fetch(){ $values = array_fill(0, count($this->keys), null); $refs = array(); foreach ($values as $i => &$f) $refs[$i] = &$f; call_user_func_array(array(&$this->stmt, 'bind_result'),$refs); $retval = $this->stmt->fetch(); if (!$retval){ $this->stmt->reset(); return $retval; } return array_combine($this->keys, $refs); } /** * Fetch all results * * @param string $query * @param mixed(string,array) $params * @return array */ public function fetchAll($query,$params = false){ $this->_execute($query,$params); $data = array(); while ($row = $this->fetch()){ $data[] = $row; } return $data; } /** * Fetch one column * * @param string $query * @param mixed(string,array) $params * @return string */ public function fetchOne($query, $params = false){ if ($this->type == 'mysqli') { $this->_execute($query,$params); $this->stmt->bind_result($result); $this->stmt->fetch(); $this->stmt->reset(); return $result; } if ($this->type == 'mysql') { if ($this->query($query, $params)) $ret = mysql_fetch_row($this->result); else throw new Exception('Error fetching data'); return $ret[0]; } } /** * Result num rows * * @return integer */ public function num_rows(){ return $this->stmt->num_rows(); } /** * Last inserted id * * @return integer */ public function lastInsertId(){ return $this->handler->insert_id; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 00:16 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
boichukvd, Мускуль тут никаким боком. Внимательно прочтите сообщение об ошибке. Все дело в том, что при вызове вида DB::query объект (тот самый, котоый $this) не создается. Соответственно, тут могут быть несколько вариантов. Можно создать объект и использовать его методы. Можно вызывать как есть, но не использовать $this. Код под спойлером не смотрел, не могу сказать, какой из вариантов подойдет лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 00:23 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
boichukvd, Прочитайте хотя бы начальный комментарий в db.php, там же все написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 00:45 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
miksoft, ну да там пишет сначала вызвать DB::getInstance() , в index.php я уже это сделал: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 00:50 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
boichukvd, вглядитесь в эту строчку повнимательней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 00:53 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
miksoft, думаю надо как-то заставить использовать getInstance в строке Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 00:56 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
Надеюсь заказанная книга Мэтта Зандстра которая еще не пришла в будущем мне поможет)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 01:19 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
на хабре в таких случаях пишут facepalm.jpg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 01:54 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
miksoft, понимаю) ну так все с такого начинают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 02:27 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 09:30 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
Hett, Спасибо, наверное я правильно понял, что я инициализировал экземпляра класса, т.е. соединение которое хранится в $db, а потом его использую Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:21 |
|
||
|
Ошибка при попытке сделать запрос к базе через MySQLi
|
|||
|---|---|---|---|
|
#18+
Если честно, я последнего вопроса не понял) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2013, 13:55 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38113803&tid=1464209]: |
0ms |
get settings: |
6ms |
get forum list: |
22ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 377ms |

| 0 / 0 |
