【发布时间】:2011-08-21 19:53:01
【问题描述】:
在阅读了这里和其他地方的许多技巧之后,我想我终于完成了我的 GET 查询,PHP 和 MYSQL 都使用 utf8。但是,当我匹配的字符串包含非 ascii 字符时,我无法获得一个简单的查询。我的(简化的)代码是:
$link = mysql_connect("h", "u", "p") or die(mysql_error());
mysql_select_db("db", $link) or die(mysql_error($link));
mysql_set_charset("utf8", $link); //connection charset
$name = mysql_real_escape_string($_GET['first'], $link);
$query = sprintf("SELECT name, date FROM guestbook WHERE name='%s'", $name);
$result = mysql_query($query, $link) or die(mysql_error());
if (mysql_num_rows($result) == 0) {
...
}
如果 'first' 是 ascii,则查询有效,如果它包含重音字符则无效。当我打印出 db(在 php 生成的表中)时,它看起来很好,在 phpadmin 中查看也是如此。
我做错了什么?我需要告诉 '=' 运算符使用 utf8 吗?为什么?
谢谢
我
【问题讨论】:
-
看起来不错,并不意味着它很好。
name列的排序规则是什么?