За последние 24 часа нас посетили 22745 программистов и 1200 роботов. Сейчас ищут 642 программиста ...

Экранирование!!!

Тема в разделе "PHP для новичков", создана пользователем greedor, 21 окт 2014.

  1. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Всем привет, подскажите почему не работает такое экранирование?
    $sql = $db->prepare("SELECT id FROM table WHERE login=:login AND password=:password AND mybd=:mybd");
    $stmt->bindParam(':login', $login);
    $stmt->bindParam(':password', $password);
    $stmt->bindParam(':mybd', 200);
    $sql->execute();
    $myrow = $sql->fetch();

    Как правильно?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    и что происходит?

    Добавлено спустя 1 минуту 30 секунд:
    наверное тебе ошибки выводятся, а ты на них x* забил, сразу на форум к умным дядькам побежал.
     
  3. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Я, честно говоря, pdo никогда не пользовался... Каким образом связаны $sql и $stmt?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    да никаким! )))
     
  5. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    У меня вообще пусто, я проверяю не на локалке
     
  6. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Ну то есть это норм? Я так понимаю, bindParam нужно делать из объекта класса PDOStatement, который возващается при выполнении prepare? Т. е. $sql->bindParam(bla-bla-bla)
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    да.
    ты только что оказал топикстартеру медвежью услугу.
     
  8. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Я исправил то же самое
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    начинай отлаживать. в моей подписи есть полезное руководство.
    только сначала скажи: что ДОЛЖНО БЫЛО произойти? ну допустим ты успешно получил в переменную данные… что дальше?
     
  10. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Немного не понял?
     
  11. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Хочу вывести id
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    и?

    Добавлено спустя 2 минуты 17 секунд:
    он не учится, а копирует. нельзя ему конкретный код давать — для его же блага.
     
  13. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Ааа... Так мне же и самому интересно. Я ж pdo не pdo...
     
  14. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Во понял, чуть по другому оказывается надо
    $stmt = $db->prepare("SELECT id FROM table WHERE login=? AND password=? AND mybd=?");
    $stmt->bindValue(1,$login, PDO::pARAM_INT);
    $stmt->bindValue(2, $password, PDO::pARAM_STR);
    $stmt->bindValue(3, 200, PDO::pARAM_STR);
    $stmt->execute();
    $myrow = $stmt->fetch();
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    в PDO возможны оба способа — и по имени, и по позиции
     
  16. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Спасибо)!
     
  17. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    php.ru помогает!
     
  18. greedor

    greedor Новичок

    С нами с:
    29 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Всегда!
     
  19. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    По индексу.

    ТСу

    Хочется же народу биндить всю эту хреновину с морковиной. Интересно, а если там 15 таблиц-списков и несколько N:N ... группировка, форматирование, конкатенация и прочая тряхомудия которая на БД сделается на халяву - вы все равно будете биндить в силект тридцать переменных?

    Самая мякотка что запрос рода залогиниться делается ровно 1 раз на всю сессию или с рук, или с куков. И на козе баян там вся эта кухня?

    Добавлено спустя 5 минут 41 секунду:
    Короче, веб-программисты, откройте на своем компе прикладку ODBC - так вот это самое PDO кагбе претендует там поселиться, среди обширного списка коннектов. ВОт и все. Все остальное - ну приписали чуваки типа моднейшие фичи.

    Кстати, аллюзия ADO - PDO, не находите? :)

    Добавлено спустя 2 минуты 19 секунд:
    Ну вот, с учетом того что в ADO имеется в распоряжении уже лет 15, PDO попросту никогда не догнать никакое ADO и смысла даже нет дрыгаться. Ну то есть если не хотите фигней страдать, платите за ASP и там будет вам и ADO и кофэ и сигарета...

    То есть надо четко понимать что никакая это нафиг не передовая технология, все уже давным давно изобретено и запатентовано. Это просто бесплатная аллюзия. Не обольщайтесь.
     
  20. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    прям, срыв покровов