Как правильно пользоваться bindParam?

Здравствуйте. Какое то время назад я уже спрашивал как правильно экранировать данные, т.к я был уверен что modx->prepare меня уже защищает. А в паре с addslashes дак вообще, ни одна инъекция не пройдет. И вот сейчас снова я вернулся к этому вопросу более плотно.
Раньше я делал так:

$data = addslashes($_POST['data']);
$q = $modx->prepare("INSERT INTO `table` (`name`,`data`) VALUES (null, '$data'));
Но как мне подсказали я ничего не фильтровал от инъекций возможных.
Мне посоветовали если я вручную собираю PDO запросы использовать bindParam, но информации я не так много нашел…

$q = $modx->prepare("INSERT INTO `table` (`id`, `data`) VALUES (null, ':data')");
$q->bindParam(':data', $data, PDO::PARAM_LOB);
$q->execute();
Внутри $data может быть все, хтмл, цсс, тексты, кавычки.

Не срабатывает. Я где то ошибся? Весь вечер пытаюсь нагуглить, не получается…
Спасибо!
Николай
16 февраля 2017, 18:14
modx.pro
1 381
0

Комментарии: 6

Наумов Алексей
16 февраля 2017, 21:23
+2
modx.pro/help/5271/ дык год назад про это разговор был :) и ссылку дали, не?
    Николай
    16 февраля 2017, 21:57
    0
    Да, Василий оставил на INSERT, но как быть с UPDATE?

    $data = array($data,$id);
            $modx->prepare("UPDATE `table` SET `data`=? WHERE `id` = ? LIMIT 1")->execute($data);
    не срабатывает, именно по этому начал смотреть в сторону bindParam
    Илья Уткин
    17 февраля 2017, 08:35
    1
    +1
    Запросы INSERT и UPDATE на PDO (but1head где-то поделился, я к себе утащил)
      Николай
      17 февраля 2017, 13:38
      0
      Спасибо! Это кажется именно то что мне нужно. Остался вопрос, в этом случае я вообще не думаю про обработку данных? или addslashes использовать все же? На боевой среде не запустилось никак, пошел создал test.php — сработало все.
        Илья Уткин
        17 февраля 2017, 13:47
        0
        Ммм… вот про addslashes не знаю… Может, придут более подкованные специалисты и подскажут)) ¯\_(ツ)_/¯
        Николай
        17 февраля 2017, 17:06
        0
        Я кстати правильно понимаю что в текущей функции обновления может быть только 1 where параметр, и без лимитов и оффсетов?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6