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。在我的脚本中,我从其他页面得到一些东西,我需要像这样在我的数据库中搜索它://这个函数正在解析其他页面并获取 SPAN 的内部文本。

$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);

结果是布尔(假)。当我将查询复制到我的 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';");

并阅读 egyal 发表的第一条评论: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 回答