Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
dr_sleep
0 / 0 / 2
Регистрация: 03.12.2015
Сообщений: 16
#1

Не добавляется амперсанд в базу данных - PHP БД

06.02.2016, 20:21. Просмотров 484. Ответов 12
Метки нет (Все метки)

Пытаюсь добавлять ссылки в базу данных, содержащие знак "&". Беда в том, что на амперсанде текст обрывается и заносится лишь текст до амперсанда.

Т.е. при добавлении ссылки вида "www.site.ru/index.php?id=1&simpletext" в базу заносится лишь "www.site.ru/index.php?id=1".

Добавляю так:
PHP
1
$text=mysql_real_escape_string($_POST[text]);
В чем может быть проблема?
http://www.cyberforum.ru/php-database/thread1725935.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2016, 20:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не добавляется амперсанд в базу данных (PHP БД):

Не добавляется информация в базу данных через форму
При добавлении товара в базу, пишет: "Товар успешно добавлен". Но ничего не...

получаю id пользователя выбрав его, но при добавлении статьи в базу, полученный id не добавляется в базу
Выбираю нужного мне пользователя, получив его id, перекидывает на страницу с...

Не добавляется в базу запись
<? require_once ("../settings/db.php"); require_once('../config.php'); if...

Не добавляется строка в базу
Здравствуйте $cs = mysql_query("SELECT name,lname FROM users WHERE...

не добавляется значение в базу
Здравствуйте $rezult = mysql_query("INSERT INTO keyinputcontrol (uid,key,data)...

12
Пифагор
1185 / 988 / 515
Регистрация: 10.01.2015
Сообщений: 3,321
06.02.2016, 20:41 #2
Попробуйте так
PHP
1
$text=mysql_real_escape_string(htmlspecialchars($_POST[text]));
Добавлено через 5 минут
и кавычки Вы забыли
PHP
1
$_POST[text]
0
Jewbacabra
Эксперт PHP
3090 / 2677 / 1223
Регистрация: 24.04.2014
Сообщений: 8,189
06.02.2016, 20:43 #3
Цитата Сообщение от dr_sleep Посмотреть сообщение
В чем может быть проблема?
В том, что этот код:
Цитата Сообщение от dr_sleep Посмотреть сообщение
PHP
1
$text=mysql_real_escape_string($_POST[text]);
в бд ничего не добавляет.
0
dr_sleep
0 / 0 / 2
Регистрация: 03.12.2015
Сообщений: 16
06.02.2016, 20:44  [ТС] #4
Jewbacabra, добавляет текст до знака амперсанда
0
Пифагор
1185 / 988 / 515
Регистрация: 10.01.2015
Сообщений: 3,321
06.02.2016, 20:45 #5
Jewbacabra, мне кажется, ТС так обрабатывает POST-переменную, а далее делает запросы в БД
Цитата Сообщение от dr_sleep Посмотреть сообщение
Т.е. при добавлении ссылки вида "www.site.ru/index.php?id=1&simpletext" в базу заносится лишь "www.site.ru/index.php?id=1".
0
Jewbacabra
Эксперт PHP
3090 / 2677 / 1223
Регистрация: 24.04.2014
Сообщений: 8,189
06.02.2016, 20:48 #6
Цитата Сообщение от dr_sleep Посмотреть сообщение
добавляет текст до знака амперсанда
конкретно эта строчка ничего не добавляет.
А вообще что выведет такой код (вставить его вместо той самой строчки)
PHP
1
var_dump($_POST['text']); exit();
0
dr_sleep
0 / 0 / 2
Регистрация: 03.12.2015
Сообщений: 16
06.02.2016, 21:08  [ТС] #7
htmlspecialchars не помогло.
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
06.02.2016, 21:29 #8
dr_sleep, размер поля в таблице позволяет сохранить полную строку?
0
Пифагор
1185 / 988 / 515
Регистрация: 10.01.2015
Сообщений: 3,321
06.02.2016, 21:38 #9
если наличие амперсанда в БД необходимо, тогда, возможно, стоит про добавлении в БД амперсанд заменять на пробел или "+", а при выводе заменять обратно.
0
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
06.02.2016, 21:54 #10
Цитата Сообщение от dr_sleep Посмотреть сообщение
Пытаюсь добавлять ссылки в базу данных
Покажите полный код добавления - как принимаете значение, обрабатываете и записываете.
0
dr_sleep
0 / 0 / 2
Регистрация: 03.12.2015
Сообщений: 16
07.02.2016, 12:33  [ТС] #11
Пробовал делать замену через str_replace() с амперсандом тоже самое (обрывается строка), а другие символы заменяет.

Как я понял, из textarea текст уже уходит без амперсанда.
HTML5
1
<textarea id='task_otvet' class="replyarea" cols="40" rows="5" name="otvet" style="margin-top: 5px;"></textarea>
Так что следующие манипуляции
PHP
1
2
3
4
$otvet=$_POST['otvet'];
//$otvet=str_replace("&","+",$otvet);
$otvet = mysql_escape_string(htmlspecialchars($otvet));
$otvet = iconv("utf-8", "windows-1251", $otvet);
получаются бессмысленными.

Как сделать чтобы textarea "принимала" амперсанд?
0
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
07.02.2016, 12:46 #12
JS-скрипты к этому полю не подключены никакие? Может они что-то рубят.

А так должно работать, попробуйте:
PHPHTML
1
2
3
4
5
<form>
    <textarea name="text">test&test</textarea>
    <input type="submit" />
</form>
<? print_r($_GET); ?>
0
dr_sleep
0 / 0 / 2
Регистрация: 03.12.2015
Сообщений: 16
07.02.2016, 13:12  [ТС] #13
JS у этого поля нет.

$_GET с вашего примера содержит:

Array ( [text] => test&test )
0
07.02.2016, 13:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2016, 13:12
Привет! Вот еще темы с решениями:

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

Список зарегестрированных пользователей не добавляется в базу. Сама регистрация работает нормально
подключение скрипта &lt;?php include(&quot;include/db_connect.php&quot;); ...

После обновления данных добавляется ///
Такая проблема. После обновления данных добаляются слеши там где кавычки Вот...

Скопировать структуру базы данных в новую базу данных без самих данных
Здравствуйте! Подскажите пожалуйста, как более удобно скопировать всю базу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru