@pashulke

Почему нельзя использовать mysql_*() и подобные?

Собственно, вопрос в названии. И что лучше использовать вместо этого?
  • Вопрос задан
  • 2643 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Использовать можно. Но не рекомендуется.

Причин две:
  1. из коробки эти функции не поддерживают плейсхолдеры. по этой причине большинство пользователей шарашат свои переменные напрямую в запрос и имеют через это неприличную болезнь. Если допилить собственную реализацию плейсхолдеров, то пользоваться можно.
  2. чувакам из Оракла впадлу поддерживать две библиотеки, и от одной тупо отказались. Поэтому сейчас при попытке обратиться к такой функции выдает ошибку, в 7 версии расширение будет удалено из дефолтной сборки, но будет поддерживаться сообществом. Если сейчас давить ошибки уровня E_DEPRECATED, а в будущем собирать руками (как и любой другой модуль) то пользоваться можно.


Что использовать вместо них, в порядке убывания предпочтительности:
  1. ORM и QueryBuilder от используемого фреймворка, например laravel.com/docs/4.2/eloquent
  2. Нормальный враппер с поддержкой плейсхолдеров, такой как phpfaq.ru/safemysql
  3. Если уж совсем никак не отказаться от привычки работать напрямую с функциями API - то PDO, phpfaq.ru/pdo
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
php.net/manual/en/function.mysql-connect.php

Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
mysqli_connect()
PDO::__construct()
Ответ написан
Комментировать
mzcoding
@mzcoding
Web-Разработка
Устарели. В php 5.5 и выше, удалены. PDO изучай.
Ответ написан
@KIN1991
Python, PHP developer
потому что пацаны из хабра перестанут уважать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы