2012-08-26 6 views
0

안녕하세요. 스크립트의 인코딩 문제가 있습니다. 처럼 내 연결 기능은 같습니다 내가 사방 utf8_polish_ci을 사용하고 내 데이터베이스에서PHP + MYSQL 인코딩, utf8_polish_ci

function connect() 
{ 
    $conn = mysql_connect('192.168.1.127', 'mason_frik', 'difficultpassword'); 
    if (!$conn) 
    { 
     die('Nie można się połaczyć!'); 
    } 
    mysql_query("SET NAMES 'utf8'; COLLATE='utf8_polish_ci';"); 
    mysql_query("SET character_set_client = 'utf8'"); 
    mysql_query("SET character_set_results = 'utf8'"); 
    mysql_query("SET character_set_connection = 'utf8'"); 
    mysql_select_db('mason_konkursy'); 
} 

. 내 스크립트에서 나는 다른 페이지에서 뭔가를 얻고 있는데 이것처럼 내 DB에서 검색해야합니다 : //이 함수는 다른 페이지를 구문 분석하고 SPAN의 innertext를 얻습니다.

$question = GetSpanData($FirstQuestion, "dnn_ctr1975_ViewContestsContestNew_dc_question_lblQuestion"); 



$wyn = mysql_query('SELECT * FROM questions WHERE question="'.$question.'"'); 
$wynik = mysql_fetch_array($wyn, MYSQL_ASSOC); 

결과는 bool (거짓)입니다. 필자는 phpmyadmin에 쿼리를 복사하고 SQL에 붙여 넣을 때 작동하지만 스크립트에서는 그렇지 않습니다. 나를 도와 줄 수 있습니까?

+2

[소개] (http://www.php.net/manual/en/intro.mysql.php)는 PHP 매뉴얼 장까지를' mysql_ *'functions : *이 확장은 새 코드 작성에는 권장되지 않습니다. 대신 [mysqli] (http://www.php.net/manual/en/book.mysqli.php) 또는 [PDO_MySQL] (http://www.php.net/manual/en/ref.pdo) -mysql.php) 확장자를 사용해야합니다. MySQL API를 선택할 때 추가 도움말은 [MySQL API 개요] (http://www.php.net/manual/en/mysqlinfo.api.choosing.php)를 참조하십시오. * – eggyal

+0

이 코드가 반환하는 내용을 알 수 있습니까? 'echo 'SELECT * FROM questions where question = "'. $ question. '"';'? – Jocelyn

답변

0

이 줄은 잘못된 것입니다 :

mysql_query("SET NAMES 'utf8'; COLLATE='utf8_polish_ci';"); 

correct syntax은 다음과 같습니다

mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci';"); 

을 그리고 게시 된 최초의 코멘트를 읽어

는 경우
SET NAMES 'charset_name' COLLATE 'collation_name' 

이 코드는 것 eggyal : mysql_ * 함수는 더 이상 사용하지 않아야하며 향후 더 이상 사용되지 않으며 PHP에서 제거 될 것입니다. 번역.

당신은이 코드 라인 인 mysql_real_escape_string를 호출 누락 될 수 있습니다

이 (나를 확인하는 것이 가능하지 않다, 그것은 기능 GetSpanData 정확히 무엇을 따라 다름) :

mysql_query('SELECT * FROM questions WHERE question="'.$question.'"'); 

데이터를 제대로 탈출 , 당신은 mysql_real_escape_string 기능을 사용해야합니다에에 명시된 바와 같이

mysql_query('SELECT * FROM questions WHERE question="'.mysql_real_escape_string($question).'"'); 
+0

MYSQLI로 변경했습니다 : $ conn = mysqli_connect ('192.168.1.127', 'mason_frik', 'difficultpassword', 'mason_konkursy'); $ conn-> query ("SET NAMES 'utf8'COLLATE 'utf8_polish_ci'"); $ wyn = $ conn-> query ('SELECT * FROM pytania WHERE pytanie = "'$ pytanie. '")); $ wynik = mysqli_fetch_assoc ($ wyn); $ odp = $ wynik [ 'odp']; 하지만 작동하지 않습니다. 경고 : mysqli_fetch_assoc()은 매개 변수 1이 mysqli_result이고, 부울이 주어진다 고 가정합니다. 여전히 bool (false) 결과. 내가 뭘해야할지 모르겠다. – user1198377

+0

mysqli 함수를 사용하여 코드를 업데이트하기 전에 내 대답을 시도하십시오. 내 대답이 작동하지 않으면'mysql_query()'를 호출 한 후'mysql_error()'의 결과를 확인하십시오. 아마도 어딘가에서 오류 메시지를 반환합니다. 코드가 mysql_ * 함수와 제대로 작동하면 mysqli_ * 함수로 작동하도록 코드를 변경할 수있다. – Jocelyn