За последние 24 часа нас посетили 17804 программиста и 1719 роботов. Сейчас ищут 972 программиста ...

Проблема с заменой данных в бд

Тема в разделе "PHP для новичков", создана пользователем ainur777, 6 сен 2013.

  1. ainur777

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

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Помогите с заменой данных в бд уже неделю мучаюсь. Существует 2 страницы reg.php и save_bd.php:
    Со страницы reg.php отправляет данные методом post в save_bd.php, так же отправляет методом $myrow['id'], номер id. Нужно чтобы у данного id изменилось значение tos в таблице, пробовал так не получилось:
    include ("bd.php");
    $result = mysql_query("UPDATE tablo SET tos='$_Post' WHERE id=$_GET['id']",$db);

    Подскажите пожалуйста как правильнее???
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    )

    Добавлено спустя 1 минуту 5 секунд:
    сравни с
    элементы массивов кстати не вызываются внутри двойных кавычек
     
  3. ainur777

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

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Как я понял так: $result = mysql_query('UPDATE tablo SET tos='$_Post' WHERE id=$_GET['id']',$db);
    только как сравнить???подскажи
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    нет, в одинарных кавычках переменные не работают вообще. Используй конкатенацию. Данные из POST надо использовать таким же образом.
     
  5. ainur777

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

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Че та все равно не получается...

    Добавлено спустя 2 минуты 36 секунд:
    Пробовал еще так:
    include ("bd.php");
    if (isset($_POST['tos'])) { $tos = $_POST['tos'];}
    $result = mysql_query 'UPDATE tablo SET tos='$tos' WHERE id=$_GET['id'],$db';
    $myrow = mysql_fetch_array($result);
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    ainur777, за апострофами следи куда ты их пишешь и для чего они в том или ином месте
     
  7. noganno

    noganno Новичок

    С нами с:
    26 авг 2013
    Сообщения:
    58
    Симпатии:
    0
    В данном случае человеку легче написать запрос, а не мучать теорией =)
    Код (Text):
    1.  
    2. "UPDATE tablo SET `tos`='".html_special_chars($_POST['tos'])."' WHERE `id`='".(int)$_GET['id']."'"
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    ты мне кайф обломал сцук -,-
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    О_о причем тут html_special_chars? И почему не пытаемся заслешить id? Верите пользователю на слово?
     
  10. noganno

    noganno Новичок

    С нами с:
    26 авг 2013
    Сообщения:
    58
    Симпатии:
    0
    как вы думаете, что вернет (int)$_GET['id']? Число или строку? Вы уверены, что стоит тут еще "заслешивать" параметр?
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ноль. Оно вернет ноль. С вероятностью 99% нулевой id будет существовать. Таким образом любое текстовое значение сразу ставит "под удар" нулевой айдишник. Это не инъекция, но дата-коррапшен на лицо

    Так что лучше не приводить, а слэшить. И не html_special_characters ом определенно.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не будет. автоинкремент идет с единички. и ничего страшного нет в том, что нулевой айдишник будет заапдейчен. Тот кто может запустить этот апдейт может запустить и любой. Т.е. косяк не в (int).
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Окай, ну а что насчет html_special_characters?)
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    уже сто раз обсуждалось. надоело до чертиков =) есть специальная функция, нужно пользовать ее, предварительно установив кодировку.
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    sqlite_escape_string :D
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Оффтоп:
    Кстати, использование WHERE%%BLYAD' спецификации передачи параметров гаранитрует полную защиту от любого вида инъекций.