У меня проблема с charset запроса для mysql bd в php-скрипте.php mysql charset запросов
Я устанавливаю параметр GET
внутри вопроса select
и он работает хорошо для всех латинских символов, но с кириллическими символами он возвращает мне пустой стол. Если я поставлю какое-то значение с использованием кириллицы в запросе вместо параметра GET
, запрос работает так, как я хочу. Аналогично, я получаю запрос результата внутри php-Admin, и он работает.
Все символы кириллицы в результате показывают меня правильно.
Я проверил все: PHP-файл utf8
, GET
значение параметра utf8
, mysql_client_encoding()
возвращает мне utf8
.
Я пробовал все, что нашел - мне ничего не помогает.
header('Content-type:text/html; charset=utf-8');
mysql_set_charset('utf8', $link);
mysql_query("SET NAMES utf8", $link);
mysql_query("SET CHARACTER SET 'utf8'", $link);
mysql_query("SET SESSION collation_connection = 'utf8_general_ci'", $link);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
Все это НЕ ПОМОЖЕТ.
Вот мой сценарий php.
<?php
$link = mysql_connect('localhost', 'r96036lg_searche', 'Jh1ZT4]^');
//mysql_set_charset('utf8', $link);
//mysql_query("SET NAMES utf8", $link);
//mysql_query("SET CHARACTER SET 'utf8'", $link);
//mysql_query("SET SESSION collation_connection = 'utf8_general_ci'", $link);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
//echo mysql_client_encoding($link);
mysql_select_db('r96036lg_searche', $link);
//mysqli::set_charset('utf8');
$query = "select id, name, typeid from MainObjects where used = 1";
if(isset($_GET['name']) && !empty($_GET['name'])) {
//$name = mb_convert_encoding($_GET['name'], "UTF-8", "win1251");
$name = $_GET['name'];
//echo mb_detect_encoding($name, "auto", false);
//$name = iconv(mb_detect_encoding($name, "auto", false), "UTF-8", $name);
//echo $name;
$query .= " and typeid = 1 and (name like '%".$name.
"%' or id in (select parentid from MainObjects where name like '%"
.$name."%' and used = 1))";
}
//echo $query;
$result = mysql_query($query, $link);
if(!$result) echo mysql_error();
else {
$out = "[";
while($row = mysql_fetch_row($result)) {
... //here is myoutput
}
$out .= "]";
echo $out;
}
?>
Вы не избежали параметра $ _GET перед вводом его в запрос. Вы знаете о SQL Injection? Если нет, прочитайте об этом, прежде чем продолжить. –
Похоже, вы создаете JSON. Если это правда, вместо этого используйте 'json_encode'. –
Что вы получаете, когда вы 'echo $ query);'? Вы уже пытались запустить это в phpmyadmin? –