Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > [PHP]


Автор: Hang 15.5.2008, 11:34
Здравствуйте! 

Есть база данных: db
Таблица: groups
Поля таблицы: group_id, group_n

Вопрос:  возникает ошибка в работе программы если в запросе пишу: 

Код

$sql = "select * from groups where group_n='ИТ'"; 


Если  же написать: 

Код

$sql = "select * from groups where group_n='IT'";
 

то все нормально и программа работает.

Вот код:

Код

<?php

    mysql_connect('localhost','root','root');

    mysql_select_db('db');

    $sql = "select * from groups where group_n='ИТ'";

    $rs = mysql_query($sql);

    echo mysql_num_rows($rs);

    mysql_close();

?>




Получается, что запрос не хочет выполняться если русская кодировка. Хотя все настройки MySQL’я  и Apache сделаны!

Ругается на 9 и 11 строку кода!

В чем дело не знаю, помогите пожалуйста!

mysql-5.0.45
php-5.2.4
apache_2.2.6

Автор: Letov 15.5.2008, 12:32
group_n это varchar или что?
Попробуй так:
Код

   $sql = "select * from `groups` where `group_n` = 'ИТ';"; 

Может поможет.
Код

<?php
$db_connect = mysql_connect('localhost','root','root');

mysql_select_db('db', $db_connect);

//Выставляем кодировку mysql
//Попробуйте удалять по строчке и посмотрите, что конкретно поможет
mysql_query("SET charset_set_client=\'cp1251\'", $db_connect);
mysql_query("SET charset_set_results=\'cp1251\'", $db_connect);
mysql_query("SET collation_connection=\'cp1251_general_ci\'", $db_connect);
mysql_query("SET character_set_connection=\'cp1251\'", $db_connect);
mysql_query("SET character_set_database=\'cp1251\'", $db_connect);
mysql_query("SET character_set_server=\'cp1251\'", $db_connect);
mysql_query("SET collation_database=\'cp1251_general_ci\'", $db_connect);
mysql_query("SET collation_server=\'cp1251_general_ci\'", $db_connect);
mysql_query("set names \'cp1251\';", $db_connect);

$sql = "select * from groups where group_n='ИТ'";
$rs = mysql_query($sql, $db_connect);
echo mysql_num_rows($rs);
mysql_close($db_connect);

?>


Автор: Hang 15.5.2008, 12:59
Цитата

group_n это varchar или что?
 Так точно!
Спасибо за помощь 
Letov, но все равно ошибка  на 
Код

echo mysql_num_rows($rs);

Автор: awers 15.5.2008, 13:02
Код

//Выставляем кодировку mysql
//Попробуйте удалять по строчке и посмотрите, что конкретно поможет
mysql_query("SET charset_set_client=\'cp1251\'", $db_connect);
mysql_query("SET charset_set_results=\'cp1251\'", $db_connect);
mysql_query("SET collation_connection=\'cp1251_general_ci\'", $db_connect);
mysql_query("SET character_set_connection=\'cp1251\'", $db_connect);
mysql_query("SET character_set_database=\'cp1251\'", $db_connect);
mysql_query("SET character_set_server=\'cp1251\'", $db_connect);
mysql_query("SET collation_database=\'cp1251_general_ci\'", $db_connect);
mysql_query("SET collation_server=\'cp1251_general_ci\'", $db_connect);
mysql_query("set names \'cp1251\';", $db_connect);


хватит только
Код

mysql_query("set names \'cp1251\';", $db_connect);

Автор: Hang 15.5.2008, 13:04
Letov,  СПАСИБО ТЕБЕ ОГРОМНОЕ!!!! 
ТЫ МНЕ ОЧЕНЬ ПОМОГ, поставил бы тебе "+", но постов у меня не хватает!

надо было написать

Код

mysql_query("set names 'cp1251'", $db_connect);
 

ВСЕ ПОЛУЧИЛОСЬ!

Автор: Letov 15.5.2008, 13:04
Не за что.

Автор: Hang 15.5.2008, 13:06
Ага, уже сделал. СПАСИБО ОГРОМНОЕ!

Автор: Feldmarschall 15.5.2008, 13:07
кавычки тоже лишние.
а уж слеши - тут я даже не знаю, каким витиеватам путем должна идти мысль, чтобы их написать в таком запросе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)