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

Форум MySQL

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

 

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

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

тема: Кириллица в MySQL
 
 автор: Евгений Петров   (16.06.2005 в 00:07)   письмо автору
 
 

Объясните мне пожалуйста, почему следующий код:

<?
  mysql_connect
();
  
mysql_select_db("test");
  @
mysql_query("create table w(r tinytext)");
  
mysql_query("insert into w(r) values ('ААААА')");
  
mysql_query("insert into w(r) values ('БББББ')");
  
mysql_query("insert into w(r) values ('ВВВВВ')");
  
$res=mysql_query("select * from w where r='ААААА'");
  for(
$i=0;$i<mysql_num_rows($res);$i++)
  {
    
$f=mysql_fetch_array($res);
    echo 
"$f[r]<br>\n";
  }
  
mysql_query("drop table w");
?>

выдает

ААААА
БББББ
ВВВВВ

Это глюк в MySQL или у меня что то со зрением :)?

   
 
 автор: XPraptor   (16.06.2005 в 10:54)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 00:07)
 

echo "$f[r]<br>\n";
Что такое f[r] и откуда взялось r?

   
 
 автор: cheops   (16.06.2005 в 12:03)   письмо автору
 
   для: XPraptor   (16.06.2005 в 10:54)
 

mysql_fetch_array возвращает ассоциативный массив $f, в качестве ключей которого используются имена столбцов таблицы, r - это имя столбца, получается $f[r].

   
 
 автор: cheops   (16.06.2005 в 12:01)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 00:07)
 

А какая версия MySQL используется и под какой операционной системой?

   
 
 автор: Евгений Петров   (16.06.2005 в 12:58)   письмо автору
 
   для: cheops   (16.06.2005 в 12:01)
 

mysql-4.0.21. Windows XP Professional SP1

   
 
 автор: cheops   (16.06.2005 в 20:26)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 12:58)
 

Хотя вообще говоря странно, почему выдаются все записи, так как если бы были проблемы с кирилицей - не выдавалось бы вообще ничего, а тут вываливается всё. Попробуйте выполнить этот запрос в различных клиентах - в консольном mysql или phpMyAdmin... результат меняется?

   
 
 автор: Евгений Петров   (16.06.2005 в 20:51)   письмо автору
 
   для: cheops   (16.06.2005 в 20:26)
 

Прошу прощение за свою неграмотность :). С этого момента можно чуть чуть подробнее? где найти консольный mysql и phpMyAdmin и как там выполнить запрос? Еще раз прошу прощение за свою неграмотность.

   
 
 автор: cheops   (16.06.2005 в 21:07)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 20:51)
 

Дело в том, что СУБД MySQL представляет собой сервер, как и к Web-серверу Apache, к нему могут обращаться большое число самых разнообразных клиентов. Один входит в состав дистрибутива MySQL и называется mysql.exe (его можно найти в каталоге C:/mysql/bin), его требуется запустить из Far или командной строки при помощи инструкции
mysql -u root

появится приглашение
mysql>

после которого можно вводить SQL-запросы, заканчивающиеся точкой запятой - об особенностях этого консольного клиента можно почитать в третьей главе справочного руководства MySQL
http://dev.mysql.com/doc/mysql/ru/connecting-disconnecting.html
http://dev.mysql.com/doc/mysql/ru/entering-queries.html

Кроме этого, на сайте MySQL вы можете свободно загрузить несколь графических клиентов (мне, например, нравится MySQL Control Center).

И наконец, если у вас имеется связка Apache+PHP+MySQL, вы можете установить у себя Web-интерфейс доступа к базе данных phpMyAdmin http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=189, который является стандартом де факто для доступа к базе данных на хостингах и входит в состав денвера. Свежую версию его можно загрузить по URL указанному в теме по ссылке выше. Этот клиент удобен тем, что он написан на PHP и если в нём запрос работает, а у вас нет - всегда можно сделать однозначный вывод о том, что проблема не в базе данных, а в PHP-коде, и наоборот, если phpMyAdmin выдаёт ошибку синтаксиса в SQL-запросе, проблема не в PHP-коде, а в SQL-запросе.

   
 
 автор: Евгений Петров   (16.06.2005 в 21:23)   письмо автору
 
   для: cheops   (16.06.2005 в 21:07)
 

У меня такое ощущение (большое), что я просто напросто не правильно установил MySQL, потому что запускал я его не так как было написано в учебнике. На данный момент он у меня вообще не запускается. Подскажите, пожалуйста или дайте ссылку, как его правильно установить и как его правильно запустить. (в моей книге нужно было запускать файл mysqld.exe, но он у меня не запускался и я методом научного тыка обнаружил, что запускается и работает mysqlв-max.exe). Заранее спасибо.

   
 
 автор: cheops   (16.06.2005 в 21:30)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 21:23)
 

Если у вас не Windows 98, то запускать MySQL в ручную уже не требуется. При установке MySQL устанавливается сервис, который автоматически стартует сервер MySQL при старте системы и выключает его при выключении компьютера. Посмотреть сервисы можно выбрав (Пуск | Настройка | Панель управления | Администрирование | Службы). Там должен быть сервис MySQL, если он имеется тип запуска должен быть Авто.
Тип запуска сменился относительно недавно и в книгах это не нашло ещё отражения.

   
 
 автор: Евгений Петров   (16.06.2005 в 21:34)   письмо автору
 
   для: cheops   (16.06.2005 в 21:30)
 

А почему он у меня тогда не запускается? Я пробовал вручную запустить процесс - тоже безрезультатно, говорит не удалось запустить MySQL на локальном компьютере.

   
 
 автор: cheops   (16.06.2005 в 22:58)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 21:34)
 

Посмотрите в свойствах на какой процесс он ссылается?

   
 
 автор: Евгений Петров   (17.06.2005 в 00:11)   письмо автору
 
   для: cheops   (16.06.2005 в 22:58)
 

Только что снес винду, поставил все заново, все работает отлично, но проблема не исчезла. В консольном mysql тоже самое, точнее буквы разобрать нельзя, но можно видеть, что записей больше чем одна :). Сейчас попробую ещё скачать phpMyAdmin и буду делать соответствующие выводы.

   
 
 автор: Евгений Петров   (17.06.2005 в 00:14)   письмо автору
 
   для: cheops   (16.06.2005 в 22:58)
 

И еще вопрос. Я когда скачивал php скачал еще какой то архив, в нем единственный файл на 30 метров.
Начинается примерно так:

   +----------------------------------------------------------------------+
   | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2004 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.0 of the PHP license,       |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | http://www.php.net/license/3_0.txt.                                  |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | license@php.net so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Authors: Rasmus Lerdorf <rasmus@php.net>                             |
   |          Stig Bakken <ssb@php.net>                                   |
   |          Jim Winstead <jimw@php.net>                                 |
   +----------------------------------------------------------------------+

не подскажите что с ним делать? И не phpMyAdmin ли это?

   
 
 автор: cheops   (17.06.2005 в 00:21)   письмо автору
 
   для: Евгений Петров   (17.06.2005 в 00:14)
 

А какое у него расширение? Нет, на phpMyAdmin это не похоже.

   
 
 автор: Евгений Петров   (17.06.2005 в 01:22)   письмо автору
 
   для: cheops   (17.06.2005 в 00:21)
 

Да это был точно не phpMyAdmin а расширения у него помоему вообще нет. Так вот я установил phpMyAdmin и к моему несчастью результат тот же.

   
 
 автор: cheops   (17.06.2005 в 02:05)   письмо автору
 
   для: Евгений Петров   (17.06.2005 в 01:22)
 

А не могли бы вы выложить эту злосчастную таблицу (если она не очень большая) - файлы находятся в каталоге data/имя_базы/ и совпадают с именем таблицы (их должно быть три, если используется таблица типа MyISAM) - тогда бы можно было отладить ситуацию на независимой машине. Уж больно случай интересный...

   
 
 автор: Евгений Петров   (17.06.2005 в 16:38)   письмо автору
 
   для: cheops   (17.06.2005 в 02:05)
 

Вот.

   
 
 автор: cheops   (17.06.2005 в 21:32)   письмо автору
 
   для: Евгений Петров   (17.06.2005 в 16:38)
 

Используется mysql-4.0.24. Подцепил данную таблицу - получил вменяемый результат - попробуйте переставить MySQL.
mysql> select * from w;
+-------+
| r     |
+-------+
| ААААА |
| БББББ |
| ВВВВВ |
+-------+
3 rows in set (0.00 sec)
mysql> select * from w where r='ААААА';
+-------+
| r     |
+-------+
| ААААА |
+-------+
1 row in set (0.00 sec)

   
 
 автор: Евгений Петров   (18.06.2005 в 00:36)   письмо автору
 
   для: cheops   (17.06.2005 в 21:32)
 

Пробовал, не получается, может я как то не так устанавливаю или у меня в самой винде че то с локализацией?

   
 
 автор: cheops   (18.06.2005 в 02:29)   письмо автору
 
   для: Евгений Петров   (18.06.2005 в 00:36)
 

Скорее в MySQL, начиная с 4.0.24 появилась возможность выставлять кодировку по умолчанию, у меня в коре не диска С лежит конфигурационный файл my.ini следующего содержания
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306

#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/mysql/"

#Path to the database root
datadir="C:/mysql/Data/"

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=cp1251

но последняя директива действует похоже только начиная с 4.0.24.

   
 
 автор: Евгений Петров   (18.06.2005 в 16:07)   письмо автору
 
   для: cheops   (18.06.2005 в 02:29)
 

А что вы мне в этом случае можете посоветовать? Поставить новую версию?

   
 
 автор: cheops   (18.06.2005 в 17:10)   письмо автору
 
   для: Евгений Петров   (18.06.2005 в 16:07)
 

Ну или как минимум переставьте текущую... (я что-то не припомню такого поведения в более старых версиях - что-то тут не чисто).

   
 
 автор: Евгений Петров   (18.06.2005 в 17:45)   письмо автору
 
   для: cheops   (18.06.2005 в 17:10)
 

Не подскажите как её правильно установить. Там по моему надо какой то файл (mysql.dll) если мне память не изменяет откуда-то поместить в папку system32. Проще говоря где можно найти руководство по установке?

   
 
 автор: Евгений Петров   (18.06.2005 в 18:59)   письмо автору
 
   для: cheops   (18.06.2005 в 17:10)
 

А где можно скачать последнюю версию. Я зашел на сайт [url]mysql.com[/url] после непродолжительных поисков я зашел на страницу http://dev.mysql.com/downloads/mysql/4.1.html и ужаснулся! Подскажите пожалуйста что из этой страницы мне нужно скачать (ОС Windows XP Professional).

   
 
 автор: cheops   (18.06.2005 в 20:59)   письмо автору
 
   для: Евгений Петров   (18.06.2005 в 18:59)
 

Нет это 4.1, нужно идти на 4.0 http://dev.mysql.com/downloads/mysql/4.0.html - идите в середину и ищите строку "Windows downloads" -> Windows (x86) -> Pick a mirror

   
 
 автор: Евгений Петров   (18.06.2005 в 21:00)   письмо автору
 
   для: cheops   (18.06.2005 в 20:59)
 

А почему бы не скачать 4.1? Она хуже?

   
 
 автор: Евгений Петров   (19.06.2005 в 13:50)   письмо автору
 
   для: Евгений Петров   (18.06.2005 в 21:00)
 

Вчера скачал mysql 4.024 (до 3 ночи качал :) ). Сегодня слил винду, поставил все заново и что вы думаете? Не работает!!! Сервис не запускается. Я думал с ума сойду. Я обратил внимание что в папке "C:\WINDOWS" не было файла my.ini, в связи с чем я создал его собственноручно, поместив в него информацию из вашего my.ini. Вопреки всем моим ожиданиям mysql запустился, а ГЛАВНОЕ все работает на запрос 'ААААА' выдает 'ААААА'. Поэтому огромное вам спасибо cheops. Похоже дело было все таки в версии mysql.
P.S И все таки мне стало интересно:
1) Неужели в версии 4.024 нужно создавать my.ini вручную?
2) Что плохого в версиях 4.1?

   
 
 автор: cheops   (19.06.2005 в 16:02)   письмо автору
 
   для: Евгений Петров   (19.06.2005 в 13:50)
 

1) да, если он необходим.
2) База хорошая, но подглючивает русский текст (выводятся ?????? вместо русских букв) при работе со базами, оставшимися в наследство от старых версий, подробности по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4467 - там же указано, как эту проблему решать, но всё равно остаются проблемы при переносе старых баз.

   
 
 автор: Евгений Петров   (17.06.2005 в 17:51)   письмо автору
 
   для: cheops   (17.06.2005 в 02:05)
 

Теперь я просто в шоке! Я решил занести в таблицу подобным образом весь алфавит ('ГГГГГ','ДДДДД',...,'ЯЯЯЯЯ') и начал по очереди выбирать каждую запись, вот что у меня получилось:

+--------------------+
| запрос | результат |
+--------+-----------+
| ААААА: | ААААА     |
|        | БББББ     |
|        | ВВВВВ     |
|        | ГГГГГ     |
+--------+-----------+
| БББББ: | ААААА     |
|        | БББББ     |
|        | ВВВВВ     |
|        | ГГГГГ     |
+--------+-----------+
| ВВВВВ: | ААААА     |
|        | БББББ     |
|        | ВВВВВ     |
|        | ГГГГГ     |
+--------+-----------+
| ГГГГГ: | ААААА     |
|        | БББББ     |
|        | ВВВВВ     |
|        | ГГГГГ     |
+--------+-----------+
| ДДДДД: | ДДДДД     |
|        | ЖЖЖЖЖ     |
+--------+-----------+
| ЕЕЕЕЕ: | ЕЕЕЕЕ     |
+--------+-----------+
| ЁЁЁЁЁ: | ЁЁЁЁЁ     |
+--------+-----------+
| ЖЖЖЖЖ: | ДДДДД     |
|        | ЖЖЖЖЖ     |
+--------+-----------+
| ЗЗЗЗЗ: | ЗЗЗЗЗ     |
+--------+-----------+
| ИИИИИ: | ИИИИИ     |
|        | ЙЙЙЙЙ     |
|        | ККККК     |
|        | ЛЛЛЛЛ     |
+--------+-----------+
| ЙЙЙЙЙ: | ИИИИИ     |
|        | ЙЙЙЙЙ     |
|        | ККККК     |
|        | ЛЛЛЛЛ     |
+--------+-----------+
| ККККК: | ИИИИИ     |
|        | ЙЙЙЙЙ     |
|        | ККККК     |
|        | ЛЛЛЛЛ     |
+--------+-----------+
| ЛЛЛЛЛ: | ИИИИИ     |
|        | ЙЙЙЙЙ     |
|        | ККККК     |
|        | ЛЛЛЛЛ     |
+--------+-----------+
| МММММ: | МММММ     |
|        | ННННН     |
|        | ООООО     |
|        | ППППП     |
+--------+-----------+
| ННННН: | МММММ     |
|        | ННННН     |
|        | ООООО     |
|        | ППППП     |
+--------+-----------+
| ООООО: | МММММ     |
|        | ННННН     |
|        | ООООО     |
|        | ППППП     |
+--------+-----------+
| ППППП: | МММММ     |
|        | ННННН     |
|        | ООООО     |
|        | ППППП     |
+--------+-----------+
| РРРРР: | РРРРР     |
+--------+-----------+
| ССССС: | ССССС     |
+--------+-----------+
| ТТТТТ: | ТТТТТ     |
|        | УУУУУ     |
|        | ФФФФФ     |
|        | ХХХХХ     |
+--------+-----------+
| УУУУУ: | ТТТТТ     |
|        | УУУУУ     |
|        | ФФФФФ     |
|        | ХХХХХ     |
+--------+-----------+
| ФФФФФ: | ТТТТТ     |
|        | УУУУУ     |
|        | ФФФФФ     |
|        | ХХХХХ     |
+--------+-----------+
| ХХХХХ: | ТТТТТ     |
|        | УУУУУ     |
|        | ФФФФФ     |
|        | ХХХХХ     |
+--------+-----------+
| ЦЦЦЦЦ: | ЦЦЦЦЦ     |
+--------+-----------+
| ЧЧЧЧЧ: | ЧЧЧЧЧ     |
+--------+-----------+
| ШШШШШ: | ШШШШШ     |
+--------+-----------+
| ЩЩЩЩЩ: | ЩЩЩЩЩ     |
|        | ЪЪЪЪЪ     |
|        | ЫЫЫЫЫ     |
+--------+-----------+
| ЪЪЪЪЪ: | ЩЩЩЩЩ     |
|        | ЪЪЪЪЪ     |
|        | ЫЫЫЫЫ     |
+--------+-----------+
| ЫЫЫЫЫ: | ЩЩЩЩЩ     |
|        | ЪЪЪЪЪ     |
|        | ЫЫЫЫЫ     |
+--------+-----------+
| ЬЬЬЬЬ: | ЬЬЬЬЬ     |
|        | ЭЭЭЭЭ     |
+--------+-----------+
| ЭЭЭЭЭ: | ЬЬЬЬЬ     |
|        | ЭЭЭЭЭ     |
+--------+-----------+
| ЮЮЮЮЮ: | ЮЮЮЮЮ     |
+--------+-----------+
| ЯЯЯЯЯ: | ЯЯЯЯЯ     |
+--------+-----------+

   
 
 автор: cheops   (16.06.2005 в 21:33)   письмо автору
 
   для: Евгений Петров   (16.06.2005 в 21:23)
 

Если сервиса нет, то его можно инсталлировать при помощи команд, приведённых в конце темы http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=455

   
Rambler's Top100
вверх

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