Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysql VS mysqli

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
teddy
Отправлено: 06 Июня, 2013 - 22:45:29
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Доброй ночи! ) Подскажите, пожалуйста вот в чем: Слышал о том, что расширение mysql уже устарело и нужно использовать mysqli. На сколько это утверждение верно? И если оно верно, то чем первый хуже второго? в mysqli наоборот приходится больше писать, каждый раз открывать и закрывать соединение с БД. В целом не практиковал mysqli но видел как оно работает.

(Отредактировано автором: 06 Июня, 2013 - 22:56:03)

 
 Top
EuGen Администратор
Отправлено: 06 Июня, 2013 - 23:06:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Используйте mysqli - а лучше вообще PDO. mysql - устаревший драйвер, коррекция ошибок в нём давно не проводится. А в PHP 5.5 и далее mysql_* вообще будут deprecated


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 06 Июня, 2013 - 23:19:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




teddy пишет:
каждый раз открывать и закрывать соединение

Не нужно.
 
 Top
teddy
Отправлено: 06 Июня, 2013 - 23:23:22
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




EuGen
Благодарю за исчерпывающий ответ )

esterio
Странно, если у нас все основано на классах либо функциях, то вроде как нужно ведь в теле функции/метода постоянно открывать и закрывать соединение? Видел несколько примеров по использованию mysqli и там все было именно так...
 
 Top
Efex
Отправлено: 06 Июня, 2013 - 23:27:45
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




teddy пишет:
Странно, если у нас все основано на классах либо функциях, то вроде как нужно ведь в теле функции/метода постоянно открывать и закрывать соединение? Видел несколько примеров по использованию mysqli и там все было именно так...

В конструкторе - открыл, в диструкторе - закрыл. В чем проблема? А лучше, как сказали PDO
 
 Top
teddy
Отправлено: 06 Июня, 2013 - 23:32:16
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Efex
Как вариант, но конструкторы и диструкторы не используются в процедурном подходе...
 
 Top
OrmaJever Модератор
Отправлено: 06 Июня, 2013 - 23:49:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Efex пишет:
А лучше, как сказали PDO

А чем лучше? Однако


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
caballero
Отправлено: 07 Июня, 2013 - 00:33:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
В конструкторе - открыл, в диструкторе - закрыл.

и шо , в каждом объекте открывать закрывать соединение? А чем не устраивает одно соединие на страницу


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DelphinPRO
Отправлено: 07 Июня, 2013 - 00:36:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




teddy пишет:
каждый раз открывать и закрывать соединение с БД
teddy пишет:
но конструкторы и диструкторы не используются в процедурном подходе...

используйте синглтон

PHP:
скопировать код в буфер обмена
  1. function query($query) {
  2.   static $mysqli;
  3.   if (!$mysqli) {
  4.     $mysqli = new mysqli('localhost', 'user', 'password', 'dbname');
  5.   }
  6.   return $mysqli->query($query);
  7. }


Закрывать соединение не обязательно

про mysql_* забудьте, и никогда не вспоминайте.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 07 Июня, 2013 - 00:39:55
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




это не синглтон
(Добавление)
http://www.php.su/forum/topic.ph...2&topic=1376
 
 Top
teddy
Отправлено: 07 Июня, 2013 - 00:51:34
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




caballero
Меня наоборот устраивает одно соединение, но только в примерах видел что постоянно открывают и закрывают... Поэтому пришел на форум за уточнением )

DelphinPRO
синглтон - я думал это связано с XML либо с фреймворками.. я где то сталкивался с ним, но точно где - забыл ) единственное что запомнил - только название )) Но точно помню что встречал его либо в XML либо в фреймворках..

Ну раз более опытные советуют забить на устаревшее, тогда пойду читать функции mysqli из мануала )
 
 Top
DelphinPRO
Отправлено: 07 Июня, 2013 - 00:53:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




LIME, почему? Экземпляр класса MYSQLI создается только один. Все как в определении синглтона.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
vanicon
Отправлено: 07 Июня, 2013 - 00:56:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Хм, а почему бы не так:
PHP:
скопировать код в буфер обмена
  1. function connect($query) {
  2.   static $mysqli;
  3.   if (!$mysqli) {
  4.     $mysqli = new mysqli('localhost', 'user', 'password', 'dbname');
  5.   }
  6.   return $mysqli;
  7. }


-----
Так было, так есть и так будет
 
 Top
DelphinPRO
Отправлено: 07 Июня, 2013 - 00:56:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




teddy, синглтон, это паттерн проектирования. Некий класс проектируется таким образом, что ни при каких условиях невозможно создать два объекта данного класса.
(Добавление)
vanicon, можно и так. я уже советовал такую функцию на форуме, и кто-то даже взял ее на вооружение. (Orma по-моему Улыбка )
(Добавление)
только логиченее назвать ее db() и соответсвенно использовать


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 07 Июня, 2013 - 01:01:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




DelphinPRO этот паттерн подразумевает создание объекта а не статической переменной
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB