mysql_query ... нереальная ошибка. просто уже не знаю что думать

Spacewalker

Новичок
mysql_query ... нереальная ошибка. просто уже не знаю что думать

Уже второй раз встречаюсь с ошибкой:

$q="insert into `".$table."` (`param1`,`param2`,`param3,`param_text,`param4`) values ('123','123',123'','some text','123')";
$r=mysql_query ($q);
echo $q; // insert into `spacer_texts` (`param1`,`param2`,`param3,`param_text,`param4`) values ('123','123',123'','some text','123')
echo mysql_error();

if ($r)
{
все хорошо
}
else
{
все плохо
}

Суть этой ошибки выражается в следующем.
Уже второй раз у меня случается запись запроса при отсутствии ошибок, но `param_text` записывается как '' (то есть "ничего").
Тот же самый код без проблем выполняется у меня на хосте.
Проблема очевидна - кодировка. Запрос выводится как правильный, но значение одного из параметров просто обнуляется по непонятной причине. А запрос - записывается без ошибок ... ХОТЯ должен дать ошибку, ибо ячейке не присваивается значение по умолчанию...

Прошу рассказать, как вы сталкивались с проблемой кодировки, которая не вызывала ошибок, но, тем не менее, записывалась с ошибкой. Ибо второй раз у меня в базу данных попала запись с пустым логином, который проверяется двумя условиями и никак не может быть пустой. Условия выбросят пользователя в страницу с ошибкой.

-~{}~ 12.06.08 22:01:

Естественно, что param_text,` - TEXT ... а не INT или еще что-то.
Я - фрилансер, который уже не одну тысячу у.е. сделал на проектах (Я не хвастаюсь, не подумайте. И не язвите, пожалуйста. Просто хочу сказать, что я не зеленый новичок). Непонятно, как так может происходить на хосте хостера, а на моем компе все ок ...
 

Spacewalker

Новичок
*****

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

Spacewalker

Новичок
*****

От тебя лично - ничего.
Я спрашиваю у тех, кто сталкивался с похожей проблемой.
Для меня это - просто так на ровном месте не записывается значение одного из полей в базу данных, хотя значение существует.
 

valeraorg

Новичок
ошибка в скрипте, а не в запросе, проверь var_dump($param_text); перед запросом в БД.
 

Spacewalker

Новичок
Проверял запрос перед выводом. Передается string.
если записать "1" - записывается.
если записать "abc" - пустое поле.

Напомню, что:
"Естественно, что param_text,` - TEXT ... а не INT или еще что-то."
Таблицы лечил, ошибок нет.

Сейчас проблема решена с помощью следующей конструкции:
'".mb_convert_encoding(mysql_real_escape_string(stripslashes($param_text)),"UTF8","WINDOWS-1251")."'

То есть налицо баг в кодировке. Но мне непонятен сам механизм этой ошибки - выдается флаг успеха, а поле обнуляется.
 

valeraorg

Новичок
Автор оригинала: *****
valeraorg
у кирилицы есть очень много кодировок
Я хотел сказать на оборот - речь идет не о кирилице.

-~{}~ 20.06.08 09:09:

Автор оригинала: Spacewalker
Проверял запрос перед выводом. Передается string.
если записать "1" - записывается.
если записать "abc" - пустое поле.

Напомню, что:
"Естественно, что param_text,` - TEXT ... а не INT или еще что-то."
Таблицы лечил, ошибок нет.

Сейчас проблема решена с помощью следующей конструкции:
'".mb_convert_encoding(mysql_real_escape_string(stripslashes($param_text)),"UTF8","WINDOWS-1251")."'

То есть налицо баг в кодировке. Но мне непонятен сам механизм этой ошибки - выдается флаг успеха, а поле обнуляется.
Тогда все понятно. У вас кодировка соединения к базе стоит одна а вы передаете ей другую. Используйте set charset
 

Фанат

oncle terrible
Команда форума
valeraorg
давай ты будешь немножко думать перед тем, как писать?
 

crocodile2u

http://vbolshov.org.ru
valeraorg
Это форум по mysql. Давай ты будешь постить сюда не куски пхп-кода, а SQL-запросы. К тому же, уверен, что если ты еще раз запостишь сюда не реальный запрос, а "я для примера напечатал запрос. не обращай внимание на синтаксис." - будет хороший повод тему снести фтопку - не захламляй свой и чужой мозг всякой ерундой.
 

crocodile2u

http://vbolshov.org.ru
тьфу черт... ну все равно тока мозги запудрил... Значит, мое сообщение относится к автору. ну и еще - пусть автор проверит тип этого текстового поля.
 

Spacewalker

Новичок
mysql_query('SET NAMES "UTF8"');
mysql_query("SET collation_connection='utf8_general_ci'");
mysql_query("SET collation_server='utf8_general_ci'");
mysql_query("SET character_set_client='utf8'");
mysql_query("SET character_set_connection='utf8'");
mysql_query("SET character_set_results='utf8'");
mysql_query("SET character_set_server='utf8'");

модуль, который принимает значения формы, передает базе данных такие запросы.
 

Фанат

oncle terrible
Команда форума
какая красота.
При том, что нужен только первый.
И то - если данные действительно поступают в UTF8

страницы у тебя в какой кодировке?
 

valeraorg

Новичок
настолько эта тема уже заезжена, а столько людей собралось на форум из -за этой проблемы. Если топикстартер такой (незеленый) кодер, у него таких проблем просто небыло бы.

-~{}~ 21.06.08 09:42:

Автор оригинала: crocodile2u
тьфу черт... ну все равно тока мозги запудрил... Значит, мое сообщение относится к автору. ну и еще - пусть автор проверит тип этого текстового поля.
Автор сказал что он проверил. Тут помоему только ты кому-то могзи пудришь. Толкового то ничего несказал.
 
Сверху