2014-09-14 1 views
0

У меня есть русский сайт, а вместо русских данных я вижу данные на английском языке.Вместо русских данных я вижу данные на английском языке

<?php 
    $dbc_utf8 = mysqli_connect ("mysite.com", "xxxxxxxxxxx", "xxxxxxxxxxx", "xxxxxxxxxxx"); 
    mysqli_query($dbc_utf8, 'SET CHARACTER utf8'); 
    mysqli_query($dbc_utf8, 'SET NAMES utf8'); 
      /* Installing Russian locale Connection */ 
      mysqli_query($dbc_utf8, "SET lc_time_names = 'ru_RU'") ;  
    ?> 

У меня есть база данных, где мне нужно поле "date_add" на русском языке. На экране я вижу "23 февраля 2014"

CREATE TABLE `comment_common` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `parent_id` int(5) NOT NULL, 
    `id_post` int(5) NOT NULL, 
    `id_shop` int(5) NOT NULL, 
    `name` varchar(200) CHARACTER SET utf8 NOT NULL, 
    `comment` text CHARACTER SET utf8 NOT NULL, 
    `date_add` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=11568 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11568 ; 

В базе данных

$sql = " 
     SELECT id, parent_id, name, comment, 
     DATE_FORMAT(date_add, '%d %M %Y') as date_add 
     FROM comment_common 
"; 
+0

Какую версию mysql вы используете? – Joe

+0

Какая у вас система управления сервером? – Anas

ответ

0

Получить время из базы данных, и положить, что на переменную. Тогда попробуйте этот код:

Если вы работаете в Linux на использование сервера:

setlocale(LC_ALL, 'ru_RU.UTF-8'); 
echo strftime(); //PS down 

вы можете узнать, как использовать эту функцию из here

Если вы используете Windows:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
setlocale(LC_ALL, 'russian'); 
+0

Я использую user3871018

0

Вы должны запустить эти запросы, помещая их в один запуск SQL

$sql = " 
SET lc_time_names = 'ru_RU'; 
SELECT id, parent_id, name, comment, 
     DATE_FORMAT(date_add, '%d %M %Y') as date_add 
     FROM comment_common;"; 

Если я запустил его таким образом в phpMyAdmin, я отобразил его на правильном языке: 14 Сентября 2014, но когда я впервые запустил первый запрос, а затем второй запрос, у меня также были данные на английском языке.

Чтобы получить желаемый результат, вы должны использовать функцию mysqli_store_result() поэтому правильный код, который будет:

<?php 

header('Content-Type: text/html; charset=utf-8'); 
$dbc_utf8 = mysqli_connect ("localhost", "root", "", "tests"); 
mysqli_query($dbc_utf8, 'SET CHARACTER utf8'); 
mysqli_query($dbc_utf8, 'SET NAMES utf8'); 
/* Installing Russian locale Connection */ 
$sql = " 
SET lc_time_names = 'ru_RU'; 
SELECT id, parent_id, name, comment, 
     DATE_FORMAT(date_add, '%d %M %Y') as date_add 
     FROM comment_common 
"; 

if (mysqli_multi_query($dbc_utf8, $sql)) { 
    do { 
     /* store first result set */ 
     if ($result = mysqli_store_result($dbc_utf8)) { 
      while ($row = mysqli_fetch_assoc($result)) { 
       echo $row['date_add']; 
      } 
      mysqli_free_result($result); 
     } 

    } while (mysqli_more_results($dbc_utf8) && mysqli_next_result($dbc_utf8)); 
} 
?> 

Однако это не очень удобно. Похоже, что вместо SET lc_time_names = 'ru_RU' вы должны использовать SET GLOBAL lc_time_names = 'ru_RU', чтобы заставить его работать в обычном коде, так что лучший вариант должен быть:

<?php 

header('Content-Type: text/html; charset=utf-8'); 
$dbc_utf8 = mysqli_connect ("localhost", "root", "", "tests"); 
mysqli_query($dbc_utf8, 'SET CHARACTER utf8'); 
mysqli_query($dbc_utf8, 'SET NAMES utf8'); 
/* Installing Russian locale Connection */ 
mysqli_query($dbc_utf8, "SET GLOBAL lc_time_names = 'ru_RU'") ; 

$sql = " 
     SELECT id, parent_id, name, comment, 
     DATE_FORMAT(date_add, '%d %M %Y') as date_add 
     FROM comment_common 
"; 

$result = mysqli_query($dbc_utf8, $sql); 

$row = mysqli_fetch_assoc($result); 

echo $row['date_add']; 



?> 

Однако в этом случае вам необходимы права администратора, и я не знаю почему, но этот код Безразлично работа в первом запуске, со второго - дата на русском языке.

+0

, в этом случае у меня есть «Запрос на запрос базы данных». – user3871018

+0

@ user3871018 Пожалуйста, посмотрите отредактированный ответ –

Смежные вопросы