Ошибка Wierd and Annoying: вызов неопределенной функции mysql_query ()

Я занимаюсь этим больше часа, я могу подключиться к моей базе данных и всем (не дает никаких ошибок), но я получаю следующую ошибку, когда я пытаюсь использовать «mysql_query ($ query)»;

Call to undefined function mysql_query() 

Я уже пробовал включить:

 extension=php_mysql.dll extension=php_mysqli.dll 

и я добавил:

 extension_dir = "ext" extension=php_mysql.dll 

в конце списка импорта.

Между каждым изменением, которое я сделал, я перезапустил все процессы в exampp, и после каждого отдельного решения, которое я отдельно пробовал, он все еще вызывает эту досадную ошибку.

Я пробовал смотреть в Интернете, но единственной ошибкой, подобной моей, было бы:

 Call to undefined function mysql_connect() 

который ни при каких обстоятельствах у меня не было проблем, никогда не видел.

Я спрашиваю об этом здесь, потому что меня рассылают по результатам поиска в Google с указанной выше проблемой; Не тот, который у меня есть.

Мне было бы очень приятно, если бы кто-то помог мне в этом, уроки, которые я нашел онлайн, показывают тот же самый код, который я написал.

phpInfo: top phpInfo: sql

PHP 7 избавился от mysql_query() потому что это проблематично по-разному! API не поощряет хорошие практики, официальная линия заключается в том, что она не поддерживается, и НЕТ ПОДГОТОВЛЕННЫХ ЗАЯВЛЕНИЙ!?! Это, по сути, самая большая проблема в PHP, которая поощряет плохие методы, ведущие к внедрению sql, и это серьезная серьезная ситуация.

Тем не менее, я работаю с устаревшими кодовыми базами, поэтому мне приходится иметь дело с той же ситуацией, что и вы в некоторых случаях. Если у вас небольшая база кода, просто обновите свой метод подключения к db. Если у вас большая база кода, вот что я рекомендую:

  • Отбросьте вашу версию php для этой кодовой базы до php 5.6, она будет поддерживаться еще немного.
  • Не спешите обновлять PDO (вы можете создать обертку вокруг PDO, чтобы сделать ее менее подробной и по-прежнему разрешать подготовленные запросы).
  • Игнорировать mysqli. Если вам потребуется 5 минут для обновления от mysql_ *, вы, вероятно, ошибаетесь и оставляете себя открытым для SQL-инъекции. Просто пойдите для PDO и начните использовать подготовленные запросы, чтобы вы могли спать по ночам.
  • Если вы все еще хотите использовать php 7 в более современных проектах, разверните бродячий экземпляр с более старыми базовыми кодами кода php 5.6.

Ответ прост, и эта информация была доступна задолго до выпуска PHP 7. Она была удалена, и они предлагают перейти к mysqli или PDO . Полный список изменений, о которых вам нужно знать о миграции, см. В этом руководстве.


Ваши варианты:

  • Откорректируйте свой код для mysqli , что совсем другое. Это не займет много времени, чтобы настроить ваш код.
  • Переключение на PDO, совершенно другое, но более гибкое и имеет мои предпочтения.
  • mysql_* были удалены, что означает, что они открыты для переопределения. Вы можете создавать функции-обертки, которые ссылаются на MySqli или PDO .
  • Вернитесь к версии 6 PHP.

Почему он был удален?

  • Он не находится в стадии разработки.
  • Функции mysql_* предоставляют только часть функциональности, которую MySQL действительно может предложить. (подумайте о транзакциях, подготовленных операциях, асинхронных запросах и т. д.)
  • Люди все еще пишут ( даже сегодня ) небезопасный код с этими функциями.

Я не говорю, что использование MySqli или PDO будет волшебным образом предотвращать инъекции MySQL, но, по крайней мере, они обеспечивают поддержку со стороны тех видов атак. Остальное зависит от тебя; программист, чтобы точно указать данные там, где это нужно.