Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблемы с записью в базу MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Andruxa
Отправлено: 20 Февраля, 2011 - 16:36:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Такая проблема.
Записываю в базу из формы следующим образом:
PHP:
скопировать код в буфер обмена
  1. db_connect();
  2. $query="INSERT  INTO zayavki
  3. (bk_login,
  4. bk_boots,
  5. ip,
  6. data
  7. )
  8.  values (
  9.  '".$_POST['bk_login']."',
  10.  '".$_POST['bk_boots']."',
  11.  '$ip',
  12.   NOW())";
  13.     mysql_query($query) or die(mysql_error());


Мне кажется все дело в дынных, которые в переменной $_POST['bk_boots'].
В ней находится ссылка на картинку в таком виде: <img src='http://img.ru/i/items/9/boots11213.gif' border='0' height='60' width='60'>.
Вот какая ошибка вылетает при добавлении данных в таблицу:
Цитата:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://img.ru/i/items/9/boots11213.gif' border='0' height='60' width='60'' at line 57


Вопросов несколько:
1) Можно ли записывать в таблицу данные в таком виде ( с html тегами)?
2) Такая запись " в столбик" как у меня корректна ?
3) То что в скобках ( ) обязательно заключать в ' ' ? (просто видел разные варианты в книгах и примерах)

Подскажите почему не происходит запись ?

P.S. Прошу прощения у модераторов, только заметил, что немного не в той теме создал Улыбка

(Отредактировано автором: 20 Февраля, 2011 - 17:05:28)

 
 Top
metra
Отправлено: 20 Февраля, 2011 - 17:02:32
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




$ip забыли обромить кавычками и точками

у вас '$ip' а надо '".$ip."'
 
 Top
Мелкий Супермодератор
Отправлено: 20 Февраля, 2011 - 17:18:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Andruxa, ваша ошибка состоит в отсутствии обработки входных данных через mysql_real_escape_string

Andruxa пишет:
1) Можно ли записывать в таблицу данные в таком виде ( с html тегами)?

да, хоть бинарные файлы храните. Главное только проэкранировать.

Andruxa пишет:
2) Такая запись " в столбик" как у меня корректна ?

парсеру запросов mysql без разницы

Andruxa пишет:
3) То что в скобках ( ) обязательно заключать в ' ' ? (просто видел разные варианты в книгах и примерах)

внимательнее рассмотрите, что там в кавычках. При необходимости, RTFM о SQL операторе INSERT.
Если коротко. в кавычки дОлжно заключать все строковые данные.


-----
PostgreSQL DBA
 
 Top
maragon
Отправлено: 20 Февраля, 2011 - 23:58:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. db_connect();
  2. $bklogin = mysql_real_escape_string($_POST['bk_login']);
  3. $bkboots = mysql_real_escape_string($_POST['bk_boots']);
  4. $query = "INSERT  INTO `zayavki`(bk_login, bk_boots, ip, data)
  5. VALUES('{$bklogin}','{$bkboots}','{$ip}',
  6. NOW())";
  7. mysql_query($query) or die(mysql_error());

---
не проверял.. но что-то похожее. Радость

(Отредактировано автором: 20 Февраля, 2011 - 23:59:50)



-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Andruxa
Отправлено: 21 Февраля, 2011 - 00:28:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Мелкий Спасибо, то что нужно Здорово

maragon Спасибо, теперь принцип действия понятен.
maragon Зачем фигурные скобки '{$bklogin}' ?
 
 Top
Okula
Отправлено: 21 Февраля, 2011 - 00:46:48
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Andruxa, так задаётся цифровое имя переменной
 
 Top
Andruxa
Отправлено: 21 Февраля, 2011 - 16:06:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Okula, понятно, спасибо за ответ.

Не хочу плодить лишнюю тему, решил спросить здесь.
Как обезопасить себя от повторной записи в базу, если пользователь нажал в браузере "Назад" и снова на кнопку отправки формы ?

Т.е. у меня есть 3 странички (test1.php, test2.php, test3.php)
В test1.php - 1-я форма регистрации
в test2.php - 2-я форма регитсрации
в test3.php - завершение регистрации.
(Грубо, пытаюсь реализовать регистрация в несколько шагов)
В test1 у меня форма, которую пользователь заполняет и передает данные в test2.
В test2 есть своя другая форма, но перейдя на test2 я записываю данные предыдущей формы в базу.
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['add_z']))
  2.     {
  3. // Записываем данные
  4.     }

Вот тут и вопрос. Как себя обезопасить от повторной записи (если пользователь нажмет "Назад" и снова на форму) ?
Мои мысли: сериализовать данные из первой формы и записывать их вместе с данными из второй формы.
Ну или подскажите в каком направлении хоть топать Улыбка
 
 Top
EuGen Администратор
Отправлено: 21 Февраля, 2011 - 16:11:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Для пошаговой регистрации (равно как и пошагового чего-то) разумно использовать сессии.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
JustUserR
Отправлено: 21 Февраля, 2011 - 18:08:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Andruxa пишет:
Как обезопасить себя от повторной записи в базу, если пользователь нажал в браузере "Назад" и снова на кнопку отправки формы ?
В качестве возможного средства решения предполагаемого вопроса допустимо использование средств организации взаимодейтвия с пользователем - основанного на обеспечении исполнения единой инстанции HTML-приложения с управлением интерактивной передачей информационных полей - на основе применения технологий Iframe и AJAX


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB