|
|
|
| Здравствуйте. К вам меня привела крайне странная проблема.
Суть в том, что есть БД есть таблица в ней два поля. Допустим имя и ник. Если ввести ник англ буквами, а имя ввести русскими, то вместо русских букв исключительно каркозябры. Или же русские буквы, но поменявшиеся местами. Например вместо имени "Иван" в таблицэ содержиться "штрэ". Я ходил на 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. | |
|
|
|
|
|
|
|
для: Tcume
(10.04.2007 в 17:44)
| | У Вас имена столбиков русскими буквами названы?
Между прочим, неплохо былобы привести текст запроса. Если уж не структуру таблицы. | |
|
|
|
|
|
|
|
для: 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);
|
| |
|
|
|
|
|
|
|
для: 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; | |
|
|
|
|
|
|
|
для: 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 в 18:42)
| | я так понимаю, мне совсем ни кто не ответит? | |
|
|
|