Задать вопрос

Как передать запрос из php в mysql, кодировка 1252?

Здравствуйте. Столкнулся с проблемой.
Данные в моей базе используют кодировку 1252 (mysql)

Из php мне необходимо передавать запрос к бд, для чего я перекодирую мою запись в 1252 так:

$string = "Привет";
$string = iconv('utf-8', 'cp1251', $string);
$string = iconv('cp1252', 'utf-8', $string);


Всё ок, теперь я обращаюсь к бд с запросом:

$textsql='SELECT id FROM inv_devices where staff="'.$string.'"';
$answsql=mysql_query($textsql);
$id1=mysql_result($answsql,0,0);


и вижу

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL...


Если же я напрямую подключусь к бд и сделаю
SELECT id FROM inv_devices where staff="<b>Ïðèâåò</b>"


То всё окей. Слект работает. Подскажите как решить мне проблему.
  • Вопрос задан
  • 3171 просмотр
Подписаться 3 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@kaasius
Пока все, что видно - это кривота какая-то.
$string = iconv('utf-8', 'cp1251', $string);
$string = iconv('cp1252', 'utf-8', $string);

То есть вы из utf8 преобразуете к 1251, а потом эту полученную строку преобразуете из 1252 в utf8? Это сильно похоже на бредни.

Если что, все современные БД держат внутри все данные в utf8. Поэтому если сайт работает у вас в utf8, то вам надо просто правильно задать кодировку подключения к БД, и не запаривать мозги себе и коллегам :)
Ответ написан
Комментировать
deadbyelpy
@deadbyelpy
веб-шмеб
Может поможет mysql_query("set names 'utf8'");
Хотя и правда, непонятно зачем туда сюда гонять кодировки.
Ответ написан
Комментировать
Terminaft
@Terminaft
Можно такое попробовать
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $db);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы