2013-11-27 2 views
2

'utf8_general_ci'의 데이터 정렬 및 'app_name'열의 데이터를 검색하려고합니다. Plants vs. Zombies ™ 2, Kakao의 포코 팡, 네이버 - Naver, μTorrent® - Torrent App. 나는 아래 표 쿼리했을 때 :MySQL 출력을위한 유니 코드 문자 인코딩

<?php 

    $con = mysql_connect('localhost', 'root', 'root') or die('Error connecting to server'); 

    mysql_select_db('googleappanalysis', $con); 

    if(isset($_POST['appType'])) 
    { 
    $appType = $_POST['appType']; 
    $month = $_POST['month']; 
    $year = $_POST['year']; 
    } 


    $monthYear = $month.$year; 

    mysql_query("SET NAMES utf8") 

    if($appType == "Apps with IA"){ 
    $sql="SELECT app_name FROM MonthlyAppState WHERE is86 = 1 AND is86 IS NOT NULL AND monthYear = '".$monthYear."'"; 

    $result=mysql_query($sql); 
    }elseif($appType == "Apps with no IA"){ 
    $sql="SELECT app_name FROM MonthlyAppState WHERE is86 = 0 AND is86 IS NOT NULL AND monthYear = '".$monthYear."'"; 
    $result=mysql_query($sql); 
    } 


    $table = array(); 
    $table['cols'] = array(
array('label' => $appType, 'type' => 'string') 
); 


$rows = array(); 
$appendingString = ""; 
while($r = mysql_fetch_assoc($result)){ 

    $temp = array(); 
$temp[] = array('v' => (string)$r['app_name']); 
$rows[] = array('c' => $temp); 
    $appendingString = $appendingString."/".$r['app_name']; 
} 

$myFile = "logfile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh, $appendingString); 
fclose($fh); 

$table['rows'] = $rows; 

// encode the table as JSON 
$jsonTable = json_encode($table); 

    // set up header; first two prevent IE from caching queries 
header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

echo $jsonTable; 
?> 

jsontable null 값을 발생하고 파일에 대한 'logfile.txt'the 유니 코드 문자가 변환됩니다'??? ' 본 here

+1

당신은 정말 MySQL을 사용하지 않도록하고 대신 mysqli 또는 PDO 같은 것을 사용한다. 그것은 정기적 인 mysql 클래스는 쿼리를 sanitizing의 부담은 항상 당신보다는 당신의 기술에 넘어지는 반면 사소한 SQL 주입에서 자신을 보호합니다. – echochamber

+0

선택할 열의 문자 집합 (데이터 정렬 아님)은 무엇입니까? – zerkms

+0

그 utf8에 대한 app_name –

답변

3

사용

mysql_set_charset('utf8', $con); 

로 바로 mysql_connect 후 클라이언트 문자 집합을 설정합니다.

참고 :

+0

당신은 비추천 함수를 사용하여 옹호거야? – Phil

+0

@Phil : 10Mb의 코드라고 가정하면 - ** 하나의 ** 라인을 추가하는 것보다 모든 코드를 다시 작성하는 것이 더 낫지는 않습니다. 특히 OP가 가까운 장래에 PHP를 업그레이드하려고하지 않는 경우 – zerkms

+0

그는 SET NAMES utf8 쿼리를 가지고 있습니다. – Phil