数据库中的汉字准备语句

时间:2015-10-27 02:47:34

标签: php mysql utf-8 prepared-statement

我可能有一个简单的编码问题,但我无法弄明白。 我在MySQL数据库中有英文或中文的地址,所以我使用 utf8_unicode_ci 。我在从数据库中检索中文字符时遇到问题,但我无法在准备好的请求中使用中文字符。

我解释说: 如果我输入

$bdd= new PDO('mysql:host=localhost:3306; dbname=****;charset=utf8', 'root', '');   
$list_business = $bdd->query('SELECT * FROM business WHERE address LIKE N\'台灣台南市\' ');
$nb_business=$list_business->rowCount();

我会得到一个结果,因为其中一个地址包含"台湾台南市" 但是,如果我尝试使用准备好的请求:

$list_business = $bdd->prepare('SELECT * FROM business WHERE address LIKE ? ');
$list_business->execute(array('%'.$_POST['address'].'%'));
$nb_business=$list_business->rowCount();

如果$ _POST ['地址']是英文的,则可以使用中文,但不是:p

编辑:

如果我回显$ _POST ['地址']它显示我输入的中文地址,这样部分就可以了,但是,如果我从数据库回显地址,它将如下所示:&# 34; 701 \ u53f0 \ u7063 \ u53f0 \ u5357 \ u5e02 \ u6771 \ u5340 \ u88d5 \ u8c50 \ u885775 \ u865f"

EDIT2:

当要求显示变量时,例如' char%&#39 ;;我得到了这个结果

character_set_client utf8mb4

character_set_connection utf8mb4

character_set_database latin1

character_set_filesystem binary

character_set_results utf8mb4

character_set_server latin1

character_set_system utf8

character_sets_dir c:\ wamp \ bin \ mysql \ mysql5.6.17 \ share \ charsets \

请帮忙!

事先感谢,

Q

3 个答案:

答案 0 :(得分:1)

您是否将语言环境设置为“UTF-8”? 你有没有将你的mysql字符集设置为utf-8? 在mysql中,exec“显示变量如'%char%';它应该返回

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

答案 1 :(得分:0)

尝试设置页面本身的字符集(如果你还没有)。

header('Content-Type: text/html; charset=utf-8');

答案 2 :(得分:0)

原来在我用来测试我的php文件的表单上,编码是正确的,除了浏览器本身。虽然我将html文件保存为UTF-8,但我还是不明白为什么谷歌Chrome会将其编码为欧洲版。 无论如何,问题解决了。谢谢你的帮助,伙计=)