![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| supercelt |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Привет!
Такая проблема: Есть текстовый файл, в кодировке UTF-8
Читаю файл. Первая строка - это то что надо потом вставить в базу. ($cat) Тип поля базы - smallint(6). Кодировка базы - utf-8, сравнение - utf-8 general-ci. Эта цифра не вставляется, даже если очистить эту строку от пробелов, спецсимволов, а также если вручную привести эту строку к числовому типу.
Не помогает. Кстати, если сделать settype($cat, 'integer');, то получается тип - boolean |
||||
|
|||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 3 Всего: 37 |
у чисел нет кодировки.
что значит "не вставляется"? |
|||
|
||||
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 3 Всего: 14 |
не вставляется, mysql_error() в студию, по коду приведенному выше гадать не будем
|
|||
|
||||
| supercelt |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Ипатьев У чисел-то нет, но это строка, которая читается из файла.
Потом в цикле применяю счётчик, таким образом первая строка из файла всегда выделяется и записывается в отдельную переменную, к примеру в $id. Так вот если сделать - gettype, то выдаст - string А если проверить $id ф-ией is_numeric, то выдаст - False Не всчтавляется, это значит что в поле после вставки стоит 0, потому что 0 - это дефолтное значение поля. Вот странно. Перед запросом в базу вывоожу это в браузер - показывает число(или всё-таки строку), но в БД не вставляет. Запрос проверенный, потому что если вь коде, вместо перменной поставить просто любое число, то оно вставляется. А если подставить переменную - то нет. Добавлено через 52 секунды lelik133 Mysql_error() ничего не выводит, запрос правильный. |
||||
|
|||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 3 Всего: 37 |
Еще раз.
У чисел не бывает кодировки. У файлов - тоже. Дело не в кодировке, а в РНР коде, который готовит или выполняет запрос. Код надо отлаживать. Причем чем раньше будет понято, что кодировки здесь не при чем, тем быстрее будет найдена очередная глупая опечатка |
|||
|
||||
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 3 Всего: 14 |
ну тогда в чем вопрос, все же правильно а сделать echo запроса посмотреть глазами, чем он отличается от того что вводиться в ручную и найти ошибку нельзя? |
|||
|
||||
| supercelt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Может я чего-то не вижу...
`link_category`="2", - Показало эхо хапроса. А теперь я лезу в базу и вижу в этом поле - НУЛИИИ (( |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
`link_category`= 2
Ни кавычки, ни непечатываемые символы с загадочными кодами не нужны. |
|||
|
||||
| supercelt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
nerezus, если я убираю кавычки, то пишется ошибка - Unknown column '2' in 'field list'
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 9 Всего: 315 |
как легко было бы исправить ошибку, если бы вы запостили сюда ещё и сам запрос, плюс формат таблицы (show create table)
|
|||
|
||||
| supercelt |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
bars80080 Запрос:
Структура
|
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 9 Всего: 315 |
это не запрос, это пхп-венигрет. запрос не содержит пхп-вставок, получить его - проще простого:
echo $insert_to_jvse_links; п.с. вы уверены, что конструкция вида INSERT INTO table SET field=value, ... работает? у меня лично она помнится вызывала немедленную ошибку |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
supercelt, Query OK, 1 rows affected (63 ms)
|
|||
|
||||
| supercelt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
bars80080
Вот echo запроса, я его постил выше insert into `jos_jvse_links` set `link_type`="1", `partner_url`="www.InfinitiUSA.com", `link_category`="2", `link_status`="0", `link_added_on`="1261514373", `link_published_on`="1261514373", `rlc_last_checked_on`="0", `date_of_last_reminder`="0", `snap_status`="1", `enable_scheduler`="1", `featured`="0", `out_hits`="0", `gpr_lcache_time`="0", `uid`="0", `add_relnofollow`="1", `gpr`="0", `gpr_update`="0", `atr`="0", `atr_update`="0", `sticky`="0" А конструкция INSERT INTO table SET field=value работает и ещё как. У меня всегда работала. Я кстати попробовал сделать и по классическому варианту (...) values (...) - результат один и тот же Добавлено через 46 секунд nerezus, А что это значит? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 9 Всего: 315 |
что-то у меня такое ощущение, что у нас разные мусклы. такой бы запрос у меня не прошёл по трём параметрам. завтра специально проверю на своей машине
|
|||
|
||||
| unicross |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 5 Всего: 53 |
supercelt, у вас перед цифрой 2 расположено 3 служебных байта, сокращенно называемых BOM. Удалите эти байты и все будет нормально :
Или сохраните файл word.txt в кодировке UTF-8 без BOM. |
|||
|
||||
| supercelt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
unicross, Спасибо большое тебе дружище! И правда заработало)
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |