在阅读了这里和其他地方的许多提示后,我想我终于完成了我的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吗?为什么?
谢谢
ABO
解决方法:
表本身的字符集是什么?
此外,尝试在连接后运行以下查询:
SET NAMES UTF8;
标签:php,mysql,utf-8
来源: https://codeday.me/bug/20190621/1253484.html