2016-02-03 4 views
2

Мне нужно переместить WebSite на PHP 5.6. Поэтому мне нужно изменить способ подключения PHP к MySQL из mysql_-like-type в PDO или mysqli.Перенос на PHP 5.6: Написание обертки MySQL

Кто-то предложил написать обертку (класс), так что старый способ использования

$db = mysql_connect("localhost", "testusr", "secretpass"); 
mysql_select_db("testdb", $db); 

становится

$db = new PDO("mysql:host=localhost;dbname=testdb", "testusr", "secretpass"); 

Помимо соединения, у меня есть только основные запросы SQL, как INSERT, SELECT и DELETE.

Есть ли такая вещь, которая «переводит» старые mysql_-запросы в mysqli или PDO?

Это может быть может выглядеть следующим образом:

function mysql_connect_wrapper ($host, $user, $pwd) { 
$db = new PDO("mysql:host=localhost;dbname=testdb", "testusr", "secretpass"); 
return $db; 
} 

$db = mysql_connect_wrapper("localhost", "testusr", "secretpass"); 

Спасибо большое!

+2

PDO в основном представляет собой оболочку (ну, слой абстракции базы данных) - не проще ли было бы реорганизовать ваш код для использования PDO, а не писать обертку для обертки? – CD001

+0

в php 5.6+, вам просто нужно опустить устаревшее_warning. функции удаляются в php7 - для которых [поисковая система по вашему выбору] предоставляет десятки руководств по восстановлению mysql_function-set. но в обоих случаях вы должны просто перейти на mysqli_ или PDO и включить новые функции, которые просто не могут быть использованы просто с помощью оболочек с именем mysql_. –

+0

Также просто замена 'mysql_ *' вызовов с помощью вызовов PDO - это огромный упущенный шанс сделать ваш код нормальным, используя здравый API. – PeeHaa

ответ

0

Нет такого инструмента для автоматической конвертации. Потому что необходимо изменить не только API, но и способ запуска запросов: вместо того, чтобы добавлять переменные в строку запроса напрямую, вы должны подставить каждую переменную заполнителем, а сама переменная должна быть перенесена в execute(). Как this is the main and the only important reason why you were deprived from familiar mysql_query().

Обратите внимание, что PDO также не является предпочтительным. Вы можете использовать ORM для взаимодействия с базами данных и может быть тем, что является частью популярной рамки , например Laravel.

+0

Я не искал инструмент автоматического преобразования.Только для простого способа сделать старый, сложный и отлично функционирующий магазин osCommerce выжить при обновлении PHP. –

+0

Тогда просто gag E_DEPRECATED ошибка, как было предложено в комментариях. –

+0

Спасибо, да, я прочитал это. Но это не переместится на PHP7. так что мне лучше избежать этого. –

3

Я нашел решение: Mysql using Mysqli

Это именно то, что я искал.

+0

Как это сработало для вас? Скрипт кажется достаточно хорошим, но я не уверен, что он на 100%. У меня есть некоторые клиенты (очень) старые PHP-скрипты (разработчики исчезли), а сервер обновлен. Ваш опыт очень ценится. – msoft

+0

Я еще не использовал этот «Mysql using Mysqli», потому что мы обновили его с PHP 5.2 или 5.3 до PHP 5.6 или 5.7, так что расширение mysql все еще существует. Что такое PHP-версия вашего сервера (ов) после обновления? –

+0

Это правильно. Это только для обновления PHP 7. Текущее обновление для 5.6, но 7 не займет слишком много времени, поэтому (как вы) я хотел быть готовым ;-) Спасибо за ответ. – msoft

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