ух ты как все скадно у Вас здесь.
Вам указать явные ошибки или промолчать.
По факту где вы увидели у Вас работу с подготовленими запросами не знаю
Первим параметром в query передайте сам запрос, а вторым массив с данными. Делов-то.
И да у Вас неверный синглтон. По факту синглтон должен возвращать екземпляр обьекта. В то время у вас там идет только создание. наименование getInstance не делает то что нужно. Exception-ы не использованы. Впрочем ето не ООП, а какая-то каша с спагетти. Рекомендую переделать все заново
16. esterio - 31 Января, 2014 - 12:01:43 - перейти к сообщению
17. IllusionMH - 31 Января, 2014 - 12:04:32 - перейти к сообщению
Kenshin, ИМХО вы неправильно используете этот синглтон.
Единственной задачей его должно быть вернуть инстанс и указатель на соедиение. Т.е. в итоге вам нужно в своей функции получить свойство MySQLi этого синглтона, а дальше работать как обычно.
В противном случае нужно еще и переписать все методы.
Ай, опередили
Единственной задачей его должно быть вернуть инстанс и указатель на соедиение. Т.е. в итоге вам нужно в своей функции получить свойство MySQLi этого синглтона, а дальше работать как обычно.
В противном случае нужно еще и переписать все методы.
Ай, опередили
18. Kenshin - 31 Января, 2014 - 20:02:42 - перейти к сообщению
у меня в голове уже каша после прочтения всех материалов и я полностью запутался...
Спасибо за советы. Прочитал материалы еще раз, многое понял по новому. Многое понял, что раньше не понимал. Начал заново писать. Получилось так:
Спасибо за советы. Прочитал материалы еще раз, многое понял по новому. Многое понял, что раньше не понимал. Начал заново писать. Получилось так:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- class Database
- {
- public $pdo;
- static private $instance;
- public $dbOptions;
- public static function getInstance()
- {
- self::$instance = new self;
- return self::$instance;
- }
- private function __construct()
- {
- 'db_host' => 'localhost',
- 'db_user' => 'user',
- 'db_pass' => 'password',
- 'db_name' => 'database'
- );
- $pdo = new PDO("mysql:host=". $dbOptions['db_host'] .";dbname=". $dbOptions['db_name'], $dbOptions['db_user'], $dbOptions['db_pass']);
- }
- private function __clone(){}
- }
- $obj = Database::getInstance();
- $stmt = $obj->pdo->prepare("SELECT `mail` FROM `userdata` WHERE `username`= ? AND `password`= ?");
- $p->bind_param('ss', $log_d, $p_md5);
- $p->execute();
- $stmt->bind_result($mail);
- while ($stmt->fetch()) {
- echo $mail;
- }
Выдает ошибку Fatal error: Call to a member function prepare() on a non-object
Что опять не так? Что я опять недопонял?