[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Входные текстовые данные не читаются(
Страницы: 1, 2
Гость_Pall
Здравствуйте, столкнулся с проблемой, осложнено все тем, что тестю не локально(в определенных условиях это быстрее). но вообщем суть:

из флеша пост запросом приходит массив, в числе элементов которого есть строковый - umess.

Этот элемент я хочу поместить в базу данных в нужное место:

$viewer_id = $p['viewer_id'];
$umess= $p['umess'];
$query = 'update `srv51657_DB`.`stat` set `mess` = '.$umess.' where `uid` = '.$viewer_id.';';
$sql = mysql_query($query);


но значение не обновляется!

причем при строчке

'update `srv51657_DB`.`stat` set `mess` = '.$viewer_id.' where `uid` = '.$viewer_id.';';

(где veiwer_id - естественно числовое значение)
нужная ячейка обновляется!
при попытке ввести тексты место переменной - обновляется!(не важно какой текст - кириллица или английский)

поле в которое я ввожу имеет формат LONGTEXT, а в переменную передается текст - русский.. но правда это неважные детали - ибо при передаче текста на английском - все аналогично.

то есть проблема на стороне php-скрипта. в момент приема данных)

вот. не слышал про то чтобы эти данные надо было как-то переформатировать)

помогите кто чем может! заранее спасибо)
J1upuk
';';

WAT?

"UPDATE srv51657_DB.stat SET mess = '".$umess."' WHERE uid = '".$viewer_id;

не уверен, но попробуй.
и вообще избавляйся от косых штрихов.
Гость_Pall
ээ это обрывок строчки.. это не ошибка - там было:

$query = 'request;';
...
Гость_Pall
ну всмысле первые ; - это для запроса) ведь в запросе надо писать точка с запятой?.. вроде же....
J1upuk
Цитата (Гость_Pall @ 27.07.2013 - 00:29)
ну всмысле первые ; - это для запроса) ведь в запросе надо писать точка с запятой?.. вроде же....

Ненадо. Точкой с запятой ты обозначаешь конец действия оператора присваивания, запрос идёт просто в " "
Placido
Строковые данные в запросе должны обрамляться кавычками, также используйте mysql_real_escape_string().
"update `srv51657_DB`.`stat` set `mess` = '".mysql_real_escape_string($umess)."' where  `uid` = ".$viewer_id.";";
точку с запятой в одиночных запросах использовать не обязательно.
J1upuk
Цитата (Placido @ 27.07.2013 - 00:31)
Строковые данные в запросе должны обрамляться кавычками, также используйте mysql_real_escape_string().
"update `srv51657_DB`.`stat` set `mess` = '".mysql_real_escape_string($umess)."' where  `uid` = ".$viewer_id.";";
точку с запятой в одиночных запросах использовать не обязательно.

mysql_real_escape_string
"Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:

mysqli_real_escape_string()
PDO::quote()"

Так что лучше не привыкать)
Гость_Pall
про скобки мысль хорошая... но не помогла(
и функция эта тоже не помогла=(

пишут текст в запросе - работает. переменную - неа=(((

что еще попробовать то можно? печальбеда очень(
Гость_Pall
Цитата (J1upuk @ 26.07.2013 - 22:35)
Цитата (Placido @ 27.07.2013 - 00:31)
Строковые данные в запросе должны обрамляться кавычками, также используйте mysql_real_escape_string().
<pre class="sh_sourceCode" rel="php"><span class="sh_string">"update `srv51657_DB`.`stat` set `mess` = '"</span><span class="sh_symbol">.</span><span class="sh_function">mysql_real_escape_string</span><span class="sh_symbol">(</span><span class="sh_variable">$umess</span><span class="sh_symbol">).</span><span class="sh_string">"' where  `uid` = "</span><span class="sh_symbol">.</span><span class="sh_variable">$viewer_id</span><span class="sh_symbol">.</span><span class="sh_string">";"</span><span class="sh_symbol">;</span></pre>точку с запятой в одиночных запросах использовать не обязательно.

mysql_real_escape_string
"Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:

mysqli_real_escape_string()
PDO::quote()"

Так что лучше не привыкать)

у меня на сервере - php 5.0 ) так что для меня не устарело.

и с этой функцией есть некие изменения - раньше скрипт никак не влиял на значение ячейки, а теперь - обнуляет... ну вернее делает пустую строку.
Гость_Pall
есть еще такая мысль - была у меня такая проблема - я отложил ее решение: скрипты возвращают лишний пробел перед выводимыми через echo данными.

мне тогда сказали, что это связано с кодировкой php скрипта. что он должен быть utf8 без bom. я пытался сохранить фаил в нужной кодировке, но то ли мне это не удалось, то ли причина не вы этом. но скрипты по прежнему возвращают лишний пробел.

так воооооот. не могут ли эти проблемы быть связаны? я читал что этот пробел - это специальный символ хранящий какие-то параметры текста.

может если текстовые данных приходят без этого символа, то они не читаются?

эм... это совсем бред?) если нет, то чего делать то?=(
J1upuk
Цитата (Гость_Pall @ 27.07.2013 - 00:51)
есть еще такая мысль - была у меня такая проблема - я отложил ее решение: скрипты возвращают лишний пробел перед выводимыми через echo данными.

мне тогда сказали, что это связано с кодировкой php скрипта. что он должен быть utf8 без bom. я пытался сохранить фаил в нужной кодировке, но то ли мне это не удалось, то ли причина не вы этом. но скрипты по прежнему возвращают лишний пробел.

так воооооот. не могут ли эти проблемы быть связаны? я читал что этот пробел - это специальный символ хранящий какие-то параметры текста.

может если текстовые данных приходят без этого символа, то они не читаются?

эм... это совсем бред?) если нет, то чего делать то?=(

BOM тут не при чём, если файлы с BOM, то не будут отправляться заголовки. И проверь что вообще приходит в твои переменные.
И вообще, с каких это пор мы ловим пост таким образом как у тебя?
Попробуй так:

$viewer_id = $_POST['viewer_id'];
$umess= $_POST['umess'];
$sql = "UPDATE srv51657_DB.stat SET mess = '".$umess."' WHERE uid = $viewer_id";
mysql_query($sql);

Или данные уже отловлены из поста, и идёт обработка массива?
Guest
Цитата (J1upuk @ 26.07.2013 - 23:07)

BOM тут не при чём, если файлы с BOM, то не будут отправляться заголовки. И проверь что вообще приходит в твои переменные.
И вообще, с каких это пор мы ловим пост таким образом как у тебя?
Попробуй так:

$viewer_id = $_POST['viewer_id'];
$umess= $_POST['umess'];
$sql = "UPDATE srv51657_DB.stat SET mess = '".$umess."' WHERE uid = $viewer_id";
mysql_query($sql);

Или данные уже отловлены из поста, и идёт обработка массива?

я читаю из post вот таким образом:

$p = $_POST;
$viewer_id = $p['viewer_id'];
$umess= $p['umess'];

в чем разница то?(мне это было нужно для определенных тестов.. так и осталось)

флеш отпраляет post-запрос(простая стандартная процедура.. собственно она выполняется, так как другие запросы к БД этого же php-скрипта, работающие с числовыми значениями - работают.) в параметр "umess" - передается строковое значение. сейчас просто тестовое "privet"
Valick
Гость_Pall, не надоело?))
то что вы собираете запрос в переменную это хорошо, но надо же эти и пользоваться время от времени...
сделайте эхо запроса
echo $sql = "UPDATE srv51657_DB.stat SET mess = '".$umess."' WHERE  uid = $viewer_id";

а так же для пущей важности посмотрите таки наконец mysql_error() :)
mysql_query($sql) or die(mysql_error());


_____________
Стимулятор ~yoomoney - 41001303250491
Гость_pall
Цитата (Valick @ 27.07.2013 - 00:00)
Гость_Pall, не надоело?))
то что вы собираете запрос в переменную это хорошо, но надо же эти и пользоваться время от времени...
сделайте эхо запроса
echo $sql = "UPDATE srv51657_DB.stat SET mess = '".$umess."' WHERE  uid = $viewer_id";

а так же для пущей важности посмотрите таки наконец mysql_error() :)
mysql_query($sql) or die(mysql_error());

попробовал возвращать строку запроса - получилось:
update `srv51657_DB`.`stat` set `mess` = "" where `uid` = 94354800

тоесть в $umess приходит пустая строка.
sergeiss
Цитата (J1upuk @ 26.07.2013 - 22:23)
и вообще избавляйся от косых штрихов

Интересный совет... Все "категорически советуют" их использовать, в т.ч. и хэлп по Мускулю, а ты предлагаешь отказаться???

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.