2015-12-23 3 views
4

Я обновляю старый веб-сайт, на котором установлена ​​самая новая версия WordPress с некоторым интегрированным простым PHP-кодом. PHP-код использует старые функции mysql_ для выполнения запросов db, и поскольку я обновляю версию PHP до 5.6, я должен избавиться от них.Обновление WordPress для использования mysqli вместо mysql

Я начал просто заменять mysql_ на mysqli_ всюду, однако это приводит к следующей проблеме. Если у Вас есть вопрос, который работал раньше:

mysql_query("SELECT..."); 

Теперь он выдает ошибку, потому что и mysqli_query("SELECT...") ожидает, что первый параметр будет подключение к базе данных.

Одним из решений, которые я могу думать о том, чтобы использовать $wpdb везде вместо простых функций MySQL, однако, код имеет тысячи запросов и заменить все из них оказалось бы быть немного проблематично, как mysqli_query функции обычно следуют mysqli_fetch и т. д.

Решение, к которому я склоняюсь, - это как-то получить соединение из базы данных, которую использует WordPress, сохранить ее в переменной, скажем $con, а затем просто выполнить поиск и заменить все текущий mysqli_query( с mysqli_query($con,. Я думаю, что это должно работать, но я понятия не имею, как инициализировать переменную $con, поскольку кажется, что нет возможности получить соединение с переменной $wpdb? Поэтому два вопроса:

  1. Есть ли на самом деле способ инициализации переменной $con через $wpdb или другой способ WordPress?

  2. Если ответ отрицательный, тогда было бы разумно фактически инициализировать $con, создав новое соединение mysqli с базой данных и используя его для запуска запросов? (Я знаю, что ответ не только поэтому отсутствие решения я мог бы приступить к этой опции в конце ...)

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

Спасибо!

ответ

2

Сначала проверьте это tool. Он может помочь мигрировать от mysql_* до mysqli_*.

Если нет, то просто расширить wpdb:

  1. Написать класс с геттером для "$ ДБГА":

  2. использовать его везде вместо базового класса (этот link может Помощь)

+0

Спасибо, я только что понял, как сделать это сам. Вы можете фактически объявить «глобальный $ wpdb», а затем использовать «$ wpdb-> dbh» в качестве первого параметра в mysqli_query() и т. Д. Спасибо! – mmvsbg

Смежные вопросы