2013-09-25 4 views
1

안녕하세요, PDO 연결에 액센트를 표시하는 데 문제가 있습니다. 내가 개발 웹을 PHP를 배우고 난액센트를 사용하기 위해 pdo 연결을 수정하십시오.

function db_connect() 
{ 
    $result = new mysqli('localhost', 'database', 'password', 'user'); 
    if (!$result) 
    return false; 
    return $result; 
} 

내 테이블 라틴와 UTF8 캐릭터 세트를 사용하는 MySQL은 기존의 PHP 연결을 사용하여 개발을 시작하고 웹 페이지가 액센트 단어를 보여주는, 잘 작동합니다.

나는 charset과 collation이 구식으로 작동한다는 것을 알고있다. 하지만 PDO를 사용하려고하면 악센트가있는 모든 단어가 다릅니다. 여기 이며 예는 카테고리 이름

$db = database_connect(); 
$query = " select xxx from yyy where xxxyid = :xxxyid "; 
$query_params = array( 
    ':xxxyid' => $xxxyid 
    ); 
// Execute the query against the database 
$query = $db->prepare($query); 
$result = $query->execute($query_params); 
if (!$result) 
    trigger_error('Query failed: ' . mysql_error(), E_USER_ERROR); 
$num_xxx = $query->rowCount(); 
if ($num_xxxs == 0) 
    return false; 
$row = $query->fetch(); 
return $row['name']; 

을 optain하고 내 conection에이 방법

내가 악센트 문자를 표시 할 수있는 방법을 찾기 위해 노력 검색이
$db_options = array( 
    PDO::ATTR_EMULATE_PREPARES => false      // important! use actual prepared statements (default: emulate prepared statements) 
    , PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION   // throw exceptions on errors (default: stay silent) 
    , PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC  // fetch associative arrays (default: mixed arrays) 
); 
$database = new PDO('mysql:host=server;dbname=dbname;charset=utf8', 'user', 'password', $db_options); // important! specify the character encoding in the DSN string, don't use SET NAMES 
// create prepared statement with one parameter for the category ID 

을 설정하지만 난 할 수 없습니다 그것을 해결하십시오.

+0

mysqli 또는'PDO'입니까? 둘 다 당신의 질문에있어. – tadman

+0

제 문제는 PDO입니다. PHP와 MySQL 웹 개발 (제 4 판) Luke Welling (저자), Laura Thomson이라는 책을 사용하여 웹 페이지를 만들었지 만, 책이 오래되어서 응용 프로그램에 보안이 없다는 것을 깨달았습니다. PDO 연결을 사용했을 때 응용 프로그램이 이미 작동하고 있었지만 여전히 작동했지만 액센트가 엉망이었습니다. 솔루션을 찾았지만 일부 프로그래머는 해결책을 추천하지 않았습니다.이 줄을 배열에 추가했습니다. – user2631215

+0

문자 인코딩 문제가있는 것 같습니다. UTF-8인지 확인하십시오. 악센트 부호가있는 문자가 어떻게 나타나는지 보여주는 예가 있습니까? Windows-1252가 UTF-8로 게시되고 해석되거나 UTF-8로 해석되는 경우가 종종 있습니다. – tadman

답변

-1

내 솔루션은 완전히 다릅니다. PDO에 대한 새로운 옵션이 없으면서 .... 내 문제는 phpadmin이나 스크립트를 통해 DB에 값을 입력했을 때 문제가 발생했다는 것입니다. 그러나 스프레드 시트 소프트웨어에서 db 테이블을 채운 다음 채워진 파일을 db로 가져 오면 문제가 해결되었습니다. 이 지식은 저를 하루 하루 사 셨습니다. 희망이 도움이됩니다. 미안 나의 영어, 나는 슬로바키아어.