Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: кодировка в БД
 
 автор: Tcume   (10.04.2007 в 17:44)   письмо автору
 
 

Здравствуйте. К вам меня привела крайне странная проблема.
Суть в том, что есть БД есть таблица в ней два поля. Допустим имя и ник. Если ввести ник англ буквами, а имя ввести русскими, то вместо русских букв исключительно каркозябры. Или же русские буквы, но поменявшиеся местами. Например вместо имени "Иван" в таблицэ содержиться "штрэ". Я ходил на rusfaq.ru Я читал документы по настрйокам. Я настраивал апачь, кодировку страницы, БД, таблиц, my.ini дефолтовую кодировку, вставлял после подключения к БД из скрипта

mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

Даже вставлял

mysql_query ("set NAMES cp1251");

Ходил в реестр по пути: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]
тама все было правильно - тоесть: "1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
Но НИЧЕГО не помогает. Как было на правильно шрифт так и есть.
Если вводить исключительно из под консоли то выдает ошибку:
ERROR 1054 (42S22) Unknown collum будет) `Nice` in `field list` - это если сначал введено имя русскими буквами, если сначала ник англ буквами, потом русским имя введно, то ругаеться
ERROR 1054 (42S22) Unknown collum будет) `Иван` in `field list`.
Не подскажите, что сделать? Как решить эту проблему и что делать? Стоит все на Виндах WINxp sp2 БД Mysql ver 4,1. парсер пхп работает. Тоесть настроен апачь и php5.

   
 
 автор: Trianon   (10.04.2007 в 18:00)   письмо автору
 
   для: Tcume   (10.04.2007 в 17:44)
 

У Вас имена столбиков русскими буквами названы?
Между прочим, неплохо былобы привести текст запроса. Если уж не структуру таблицы.

   
 
 автор: Tcume   (10.04.2007 в 18:19)   письмо автору
 
   для: Trianon   (10.04.2007 в 18:00)
 

Нет. Все названия даны англ буквами. Счас дам вам запрос сам.

sql_db_connect();
if (!sql_db_connect()) die ("$err[1]");
mysql_query ("set NAMES cp1251");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$query="INSERT INTO tbl_user (name, nick, )"."VALUES ('".$_POST['u_user']."', '".$_POST['u_nike']."' )";
$res=mysql_query($query);
$mysql_insert=NULL;
$mysql_insert=mysql_insert_id();
$_SESSION['STEP']="1";
$_SESSION['ID']=$mysql_insert;
#mysql_free_result($res);
mysql_close($con);

   
 
 автор: Trianon   (10.04.2007 в 18:38)   письмо автору
 
   для: Tcume   (10.04.2007 в 18:19)
 

Запятая после INSERT INTO tbl_user (name, nick - лишняя.
Два вызова sql_db_connect() - это как?
mysql_insert=NULL; - зачем?
set NAMES cp1251 - эквивалентен трем следующим за ним. Три - явно лишние.
откуда берется $con - вообще неясно.

А главное -- всё это не то. Это код, в котором полно ошибок.
А нужен текст запроса. Тот самый, который лежит в $query.
То есть echo $query;

   
 
 автор: Tcume   (10.04.2007 в 18:42)   письмо автору
 
   для: Trianon   (10.04.2007 в 18:38)
 

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

require_once("config.php");

Там же и описана функция sql_db_connect();
окей счас выведу сам запрос. я добавил в тестовую БД еще два поля, что бы проверить. Все так и есть. русские буквы не соответсвует имени, а если пароль тоже русскими написан, то и он не правилен.

А вот что выдало echo
INSERT INTO tbl_1 (name, nick, pass, email)VALUES ('иван', 'Nise', 'lafa', 'web_mastak@tut.by')

[imysql_insert=NULL; - зачем?][/i]
Это потому, что снимаеться пошагово mysql_insert_id();

   
 
 автор: Tcume   (10.04.2007 в 21:30)   письмо автору
 
   для: Tcume   (10.04.2007 в 18:42)
 

я так понимаю, мне совсем ни кто не ответит?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования