关于utf8_general_ci整理的mysql_query

时间:2012-09-21 15:35:35

标签: mysql utf-8 utf8-decode

使用utf8编码在数据库上运行查询时遇到了一些麻烦。 一切正常,直到我尝试带有特殊字符的字符串。 我无法对数据库进行太多更改,因为我在现有的prestashop模板中添加了一些单独的页面。

这是我的代码(对不起,但有些是罗马尼亚语)

$acces_server=mysql_connect($db_host, $db_user, $db_pass);
    if(!$acces_server) die ("Server-ul nu este disponibil momentan !");
    mysql_set_charset('utf8');
     echo mysql_client_encoding();

$acces_bd = mysql_select_db($db_name);
    if (!$acces_bd) die ("Ne pare rau, dar baza de date nu poate fi accesata momentan !");
mysql_query('SET NAMES utf8') or die(mysql_error());
mysql_query('SET CHARACTER SET utf8') or die(mysql_error());
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci" ') or die(mysql_error());

如果我尝试进行这样的查询,我会得到0行:

$experienta= $_GET['name'];
$rez=mysql_query("SELECT nume_cutie FROM rez_experiente WHERE nume = '".$experienta."'"); 

我使用echo来显示查询,然后在phpMyAdmin中键入它并且它有效。 头部也有这条线:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我真的不知道还能做什么,到目前为止我找到的所有解决方案似乎都不起作用。我甚至尝试使用mysqli,结果是一样的。 请帮助我,谢谢你的时间。

*编辑 我尝试使用stmt-&gt;使用mysqli进行准备但是没有用。 我也尝试过这样做:

$experienta2=str_replace("?","%",utf8_decode($experienta));
        $rez=mysql_query("SELECT nume_cutie FROM rez_experiente WHERE nume LIKE '".$experienta2."'"); 

Wich转过身来:

SELECT nume_cutie FROM rez_experiente WHERE nume LIKE '5th Avenue Beauty Center  - Răsfăţ'

进入这个:

SELECT nume_cutie FROM rez_experiente WHERE nume LIKE '5th Avenue Beauty Center - R%sf%%'

再次查询在phpMyAdmin中工作,但mysql_query()不返回任何内容 我切换到utf8_unicode_ci,没有任何改变。

1 个答案:

答案 0 :(得分:0)

在数据库连接之后,运行以下查询:

SET character_set_client=utf8;
SET character_set_connection=utf8;
SET character_set_database=utf8;
SET character_set_results=utf8;
SET character_set_server=utf8;