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

Ребят, приветствую.
В общем есть такая ситуация. Самописная CMS, которая исправно функционирует, но в ней достаточно количество дыр для SQL инъекций.
Запросы все методом mysqli.
Начал копать, и наткнулся на PDO. Покопался и поэкспериментировал с его работой, разобрался.
Так вот вопрос в следующем:
Есть ли какие-либо упрощенные методы перехода с mysqli в PDO, например какие-то интерпретаторы или что-то в этом роде. Или я обречен на перепись вручную?
Если вручную, по своему опыту скажите, как вообще правильно выполнять такую работу?
  • Вопрос задан
  • 366 просмотров
Пригласить эксперта
Ответы на вопрос 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());

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

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

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

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