Задать вопрос

Как перевести запросы mysqli в PDO?

Ребят, приветствую.
В общем есть такая ситуация. Самописная CMS, которая исправно функционирует, но в ней достаточно количество дыр для SQL инъекций.
Запросы все методом mysqli.
Начал копать, и наткнулся на PDO. Покопался и поэкспериментировал с его работой, разобрался.
Так вот вопрос в следующем:
Есть ли какие-либо упрощенные методы перехода с mysqli в PDO, например какие-то интерпретаторы или что-то в этом роде. Или я обречен на перепись вручную?
Если вручную, по своему опыту скажите, как вообще правильно выполнять такую работу?
  • Вопрос задан
  • 387 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Steein
@Steein
Программист
Link PDO - Если слишком сложная структура
Link PDO 2

Следующее - открываете код меняете все с MYSQLi на PDO.

Миф:
Онлайн сервисов не существует
Быстро тоже не получится

Описано все о PDO
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Нет, никаких упрощенных или автоматизированных методов нет. Все переписывать придется руками.

Но тут важно понимать, для чего ты это делаешь.
Если просто "шоб було" - продолжай использовать mysqli.
Если хочешь сократить размер кода в 3-10 раз - тогда имеет смысл. Но тогда надо сначала разобраться с тем, что такое PDO и какие преимущества оно дает программисту.

Например, вместо такого кода
$name = $mysqli->real_escape_sring($_GET['name']);
$price = $mysqli->real_escape_sring($_GET['price']);
$color = $mysqli->real_escape_sring($_GET['color']);

$sql = "SELECT * FROM goods WHERE name = '$name' and color = '$color' and price > '$price'";
$res = $mysqli->query($sql);
$result = [];
while ($row = mysqli_fetch_assoc($res)) {
    $result[] = $row;
}
echo json_encode($result);

В ПДО можно написать
$stmt = $pdo->prepare("SELECT * FROM goods WHERE name = ? and color = ? and price > ?");
$stmt->execute([$_GET['name'],$_GET['price'],$_GET['color']]);
echo json_encode($stmt->fetchAll());

Что гораздо удобнее.

Учитывая, что ПДО умеет возвращать данные в десятках различных форматов, вариантов сокращения кодов может быть такое же количество
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽