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
Форумы портала PHP.SU :: Версия для печати :: mysql VS mysqli
Форумы портала PHP.SU » » Вопросы новичков » mysql VS mysqli

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

1. teddy - 06 Июня, 2013 - 22:45:29 - перейти к сообщению
Доброй ночи! ) Подскажите, пожалуйста вот в чем: Слышал о том, что расширение mysql уже устарело и нужно использовать mysqli. На сколько это утверждение верно? И если оно верно, то чем первый хуже второго? в mysqli наоборот приходится больше писать, каждый раз открывать и закрывать соединение с БД. В целом не практиковал mysqli но видел как оно работает.
2. EuGen - 06 Июня, 2013 - 23:06:16 - перейти к сообщению
Используйте mysqli - а лучше вообще PDO. mysql - устаревший драйвер, коррекция ошибок в нём давно не проводится. А в PHP 5.5 и далее mysql_* вообще будут deprecated
3. esterio - 06 Июня, 2013 - 23:19:54 - перейти к сообщению
teddy пишет:
каждый раз открывать и закрывать соединение

Не нужно.
4. teddy - 06 Июня, 2013 - 23:23:22 - перейти к сообщению
EuGen
Благодарю за исчерпывающий ответ )

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

В конструкторе - открыл, в диструкторе - закрыл. В чем проблема? А лучше, как сказали PDO
6. teddy - 06 Июня, 2013 - 23:32:16 - перейти к сообщению
Efex
Как вариант, но конструкторы и диструкторы не используются в процедурном подходе...
7. OrmaJever - 06 Июня, 2013 - 23:49:14 - перейти к сообщению
Efex пишет:
А лучше, как сказали PDO

А чем лучше? Однако
8. caballero - 07 Июня, 2013 - 00:33:45 - перейти к сообщению
Цитата:
В конструкторе - открыл, в диструкторе - закрыл.

и шо , в каждом объекте открывать закрывать соединение? А чем не устраивает одно соединие на страницу
9. DelphinPRO - 07 Июня, 2013 - 00:36:24 - перейти к сообщению
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_* забудьте, и никогда не вспоминайте.
10. LIME - 07 Июня, 2013 - 00:39:55 - перейти к сообщению
это не синглтон
(Добавление)
http://www.php.su/forum/topic.ph...2&topic=1376
11. teddy - 07 Июня, 2013 - 00:51:34 - перейти к сообщению
caballero
Меня наоборот устраивает одно соединение, но только в примерах видел что постоянно открывают и закрывают... Поэтому пришел на форум за уточнением )

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

Ну раз более опытные советуют забить на устаревшее, тогда пойду читать функции mysqli из мануала )
12. DelphinPRO - 07 Июня, 2013 - 00:53:13 - перейти к сообщению
LIME, почему? Экземпляр класса MYSQLI создается только один. Все как в определении синглтона.
13. vanicon - 07 Июня, 2013 - 00:56:42 - перейти к сообщению
Хм, а почему бы не так:
PHP:
скопировать код в буфер обмена
  1. function connect($query) {
  2.   static $mysqli;
  3.   if (!$mysqli) {
  4.     $mysqli = new mysqli('localhost', 'user', 'password', 'dbname');
  5.   }
  6.   return $mysqli;
  7. }
14. DelphinPRO - 07 Июня, 2013 - 00:56:45 - перейти к сообщению
teddy, синглтон, это паттерн проектирования. Некий класс проектируется таким образом, что ни при каких условиях невозможно создать два объекта данного класса.
(Добавление)
vanicon, можно и так. я уже советовал такую функцию на форуме, и кто-то даже взял ее на вооружение. (Orma по-моему Улыбка )
(Добавление)
только логиченее назвать ее db() и соответсвенно использовать
15. LIME - 07 Июня, 2013 - 01:01:17 - перейти к сообщению
DelphinPRO этот паттерн подразумевает создание объекта а не статической переменной

 

Powered by ExBB FM 1.0 RC1