2015-05-29 3 views
0

Я хочу привести арабские данные из базы данных mysql Я написал код php, но он дает мне ????? по арабским данным любая помощь, чтобы сделать это wokrs ??отправлять и извлекать арабские данные из базы данных mysql

<?php header('Content-Type: charset=utf-8'); 
$link=mysqli_connect("localhost","root","","arabicd"); 
mysql_set_charset('utf8',$link); 
if (mysqli_connect_errno($link)) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

mysql_query("SET character_set_results = 'utf8'"); 
mysql_query("character_set_client = 'utf8'"); 
mysql_query("character_set_connection = 'utf8'"); 
mysql_query("character_set_database = 'utf8'"); 
$result = mysqli_query($link,"SELECT question,answer FROM ask "); 
while ($row = mysqli_fetch_array($result)) 
{ 
$output[]=$row; 
} 
print(json_encode($output)); 

if($data){ 
echo $data; 
} 
mysqli_close($con); 
?> 
+0

Вы смешивания 'mysql_ *' и '' mysqli_ *. Придерживайтесь mysqli для всего. – Mike

+0

Я все еще не работал: \ –

+0

Прошу сообщить подробности об ошибке .. –

ответ

0
  • Хотя вы можете просто использовать set names utf8 вместо всего того, что жутких запросов, нет ничего здесь плохого арабскую, ура :)
  • Вы смесительные mysql_* и mysqli_*, не допускается
  • Даже если разрешено использовать взаимозаменяемые соединения mysql и mysqli, вы передаете параметры в query функции в порядке, отличном от ожидаемого
  • Y ou должен выйти из сценария в случае сбоя соединения (или делать что-либо, просто изменить поток выполнения)
  • Эта строка print(json_encode($output)); является склонной к ошибкам, что, если результатов не было получено из таблицы? цикл не будет введен, а $output не будет определен, поэтому вы должны инициализировать $output с пустым массивом, также рекомендуется проверить, пуст ли результирующий набор и обрабатывать его в отдельном блоке.
  • Кроме того, заключать имена таблиц и столбцы в обратно клещи (`) в случае, если столбец имеет имя зарезервированного ключевого слова

Вот рабочую версию коды после исправления ошибок

<html> 
 

 
<meta charset="utf-8"> 
 
<?php 
 

 

 

 
$link = mysql_connect("localhost","root",""); 
 
if ($link === false) 
 
{ 
 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
 
    exit; 
 
} 
 
mysql_select_db("arabicd", $link); 
 
mysql_query("SET NAMES utf8"); 
 

 
$result = mysql_query("SELECT `ask`.`question`,`ask`.`answer` FROM `ask` ", $link); 
 
$output = array(); 
 
while ($row = mysql_fetch_array($result)) 
 
{ 
 
    $output[]=$row; 
 
} 
 

 
print(json_encode($output)); 
 

 
if(isset($data)) 
 
{ 
 
\t echo $data; 
 
} 
 

 
mysql_close($link); 
 
?> 
 
</html>

+0

Спасибо за ваши заметки, это действительно полезно, но все же такая же проблема с арабскими буквами: \ –

+0

убедитесь, что таблица 'ask' collation is 'utf8_general_ci' –

+0

Я сделал редактирование, отметьте его –

0

просто использовать это в теге в HTML странице ....

 meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

< использовать до того мета слова

+0

Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/79114/discussion-on-answer-by-nouman-tahir-send-and-retrive-arabic-data-from-mysql- Дат). – Taryn

1

Нет, не использовать интерфейс mysql, используйте mysqli.
Нет, не используйте SET NAMES, используйте mysqli_set_charset.

До SHOW CREATE TABLE; вы, вероятно, обнаружите, что столбец, который вы пытаетесь записать, составляет CHARACTER SET latin. Это должно быть utf8.

Текст, подобный \u0633, подразумевает, что вам необходимо добавить JSON_UNESCAPED_UNICODE в качестве второго аргумента в json_encode.

0

Используйте этот код в ваш PHP:

$db= mysqli_connect('localhost','root','225352','project'); 

$SQL= 'SET CHARACTER SET utf8'; 

mysqli_query($db,**$SQL**);) 
or die (mysqli_error($SQL)); 
Смежные вопросы