使用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,没有任何改变。
答案 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;