Incorrect string value

igortik

Новичок
Incorrect string value

mysql - 5.0
php - 5.2.1
apache - 2.2.4

поле id: `id` int(7) unsigned NOT NULL auto_increment

PHP:
INSERT INTO $table (id,cat,thumb,image,width,height,name_ua,descr_ua,price) 
VALUES ('','$cat','$db_thumb','$db_img','$imgtype[0]','$imgtype[1]','$db_name_ua','$db_descr_ua','$price')
ошибка: Incorrect integer value: '' for column 'id' at row 1

даже не знаю что сказать :(
 

EugeneVC

Новичок
у него там наверно autoinc счетчик стоит
так его вставлять не нада
 

igortik

Новичок
auto_increment там

он там не нужен?

п.с. значения должны автоматом проставляться
 

igortik

Новичок
MajestiC
сделал так:
PHP:
INSERT INTO $table (cat,thumb,image,width,height,name_ua,descr_ua,price) VALUES 
('$cat','$db_thumb','$db_img','$imgtype[0]','$imgtype[1]','$db_name_ua','$db_descr_ua','$price')
не помогает
 

MajestiC

Пых
Что значит не помогает. Запись не вставляется? Выдается ошибка?
 

igortik

Новичок
MajestiC
спасибо, это помогло. :)

-~{}~ 15.05.07 16:40:

наша песня хороша - начинай сначала...

действительно, теперь ID проставляется, НО:

при попытке UPDATE:

PHP:
$db_query = "UPDATE $table SET 
cat='$cat',name_ua='$db_name_ua',descr_ua='$db_descr_ua', price='$db_price' WHERE id='$id'";
ошибка: Incorrect string value: '\xEF\xE0\xE0\xF0\xEF' for column 'descr_ua' at row 1

замечание: эта абра-ка-дабра '\xEF\xE0\xE0\xF0\xEF' русский текст, который я ввожу в поле формы.
Если же форму заполнять цифрами, либо, англ. то все обновляется.
Сравнение: cp1251_general_ci
 

MajestiC

Пых
Если включить знания англ. языка и прочитать что написано в ошибке, то всё по идее станет ясно.

Попробуйте вывести значение $db_query.
 

igortik

Новичок
MajestiC
не совсем Вас понял.

дело в том, что таких ошибок на более ранних версиях мускула не возникает....
п.с. descr_ua имеет тип text
 

MajestiC

Пых
Вообщем для начала выведи собственно сам $db_query желательно сюда (то есть реальный запрос с данными).

Потом узнай, в какой кодировке данные от браузера приходят к тебе в скрипт.

Потом сделай запрос:
SET NAMES "<тут твоя кодировка>";

Например: SET NAMES "UTF8"
 

igortik

Новичок
вообщем-то, проблема действительно в кодировке, т.к. через sql запрос к базе через пхпмайадмин

UPDATE kanc SET descr_ua='привет' where id=1; все прекрасно обновляется.

сама страничка скрипта моего имеет кодировку cp1251

-~{}~ 15.05.07 17:28:

делал set names "cp1251"; не помогает пока что
 

igortik

Новичок
что-то я запутался... можешь написать реальный пример?
п.с. я начинающий, так что не судить строго :)

-~{}~ 15.05.07 18:01:

нет set name не помогает до основного запроса
 

MajestiC

Пых
PHP:
mysql_query('SET NAMES "CP1251"');
mysql_query('UPDATE kanc SET descr_ua="привет" where id=1');
Потом посмотри в phpmyadmin что выводится. Плюс убедись что поля в cp1251_general_ci.
 

igortik

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

хотя, кодировка для страницы установлена windows-1251

п.с. в пхпмай админ же она utf-8 для страницы

-~{}~ 15.05.07 18:42:

все, спасибо большое MajestiC.
уже разобрался.. нужно было просто как на выходе так и на входе set names 'cp1251'
 
Сверху