0

こんにちは、スクリプトのエンコードに問題があります。私の接続機能は次のようになります:

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');
}

私のデータベースでは、どこでもutf8_polish_ciを使用しています。私のスクリプトでは、他のページから何かを取得しているので、次のようにデータベースで検索する必要があります。//この関数は他のページを解析し、S​​PANの内部テキストを取得します。

$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(false)です。クエリをphpmyadminにコピーしてsqlに貼り付けると、機能しますが、スクリプトからは機能しませんでした。手伝って頂けますか?

4

1 に答える 1

0

この行は間違っています:

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

正しい構文は次のとおりです。

SET NAMES 'charset_name' COLLATE 'collation_name'

あなたの場合、コードは次のようになります。

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

そして、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).'"');
于 2012-08-26T20:37:49.003 に答える