PHP+MYSQL编码,utf8\u波兰\u ci

PHP+MYSQL编码,utf8\u波兰\u ci,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,您好,我的脚本中的编码有问题。 我的连接函数如下所示: 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_poli

您好,我的脚本中的编码有问题。 我的连接函数如下所示:

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\u polish\u ci。 在我的脚本中,我从其他页面获取了一些内容,我需要在我的数据库中搜索它,如下所示: //此函数正在分析其他页面并获取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);
结果是布尔法尔斯。 当我将查询复制到phpmyadmin并粘贴到sql时,它正在工作,但从脚本中看它没有工作。 你能帮帮我吗?

这行错了:

mysql_query("SET NAMES 'utf8'; COLLATE='utf8_polish_ci';");
最重要的是:

在您的情况下,代码应该是:

mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci';");
阅读eggyal发布的第一条评论:mysql_*函数不应该再使用了,它们已被弃用,并将在将来的版本中从PHP中删除

在这行代码中,您可能缺少对mysql\u real\u escape\u string的调用。我无法确定,这取决于函数GetSpanData的具体功能:

mysql_query('SELECT * FROM questions WHERE question="'.$question.'"');
要正确转义数据,必须使用以下函数:

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

正如PHP手册中关于mysql_*函数的一章中所述:不建议在编写新代码时使用此扩展。相反,应该使用或扩展名。在选择MySQL API时,请参阅以获取更多帮助。您能告诉此代码返回的内容吗:echo'SELECT*FROM questions WHERE question='.$question'?我把它改成了MYSQLI:$conn=MYSQLI_connect'192.168.1.127','mason_frik','difficultpassword','mason_konkursy'$conn->查询集名称“utf8”与“utf8\u波兰语\u ci”相对应$wyn=$conn->查询“从pytania中选择*其中pytanie=”.$pytanie.”$wynik=mysqli_fetch_assoc$wyn$odp=$wynik['odp'];但这是行不通的。警告:mysqli_fetch_assoc希望参数1是mysqli_结果,如果仍然是boolfalse结果,则为布尔值。我不知道我需要做什么。在尝试使用mysqli函数更新代码之前,请尝试我的答案。如果我的答案不起作用,请在每次调用mysql\u查询后检查mysql\u错误的结果。它可能会在某个地方返回错误消息。当代码正确使用mysql_*函数时,您可以将其更改为使用mysqli_*函数。
mysql_query('SELECT * FROM questions WHERE question="'.mysql_real_escape_string($question).'"');