Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询中的问题(PHP MYSQL UTF-8)_Php_Mysql_Utf 8 - Fatal编程技术网

查询中的问题(PHP MYSQL UTF-8)

查询中的问题(PHP MYSQL UTF-8),php,mysql,utf-8,Php,Mysql,Utf 8,在阅读了这里和其他地方的许多技巧之后,我想我终于完成了GET查询,PHP和MYSQL都使用utf8。但是,当我匹配的字符串包含非ascii字符时,我无法使用简单的查询。我的(简化)代码是: 如果“first”是ascii,则查询有效,如果它包含重音字符,则不会。当我打印出db(在php生成的表中)时,它看起来很好,在其中查看phpadmin也是如此 我做错了什么?我需要告诉“=”操作符使用utf8吗?为什么? 谢谢 abo表格本身的字符集是什么 此外,请在连接后立即尝试运行以下查询: SET N

在阅读了这里和其他地方的许多技巧之后,我想我终于完成了GET查询,PHP和MYSQL都使用utf8。但是,当我匹配的字符串包含非ascii字符时,我无法使用简单的查询。我的(简化)代码是:

如果“first”是ascii,则查询有效,如果它包含重音字符,则不会。当我打印出db(在php生成的表中)时,它看起来很好,在其中查看phpadmin也是如此

我做错了什么?我需要告诉“=”操作符使用utf8吗?为什么?

谢谢


abo

表格本身的字符集是什么

此外,请在连接后立即尝试运行以下查询:

SET NAMES UTF8;

在查询之前,您是否尝试过将名称编码为UTF-8

$query = sprintf("SELECT name, date FROM guestbook WHERE name='%s'", utf8_encode($name));

如果这不起作用,请尝试
utf8\u解码
。这听起来很奇怪,但我有过一些奇怪的案例,它确实起了作用。

仅仅因为它看起来很好,并不意味着它很好。列
name
的排序规则是什么?没有必要,因为他使用mysql\u set\u charset。据我所知,一切都是utf8。(验证这一点的最佳方法是什么?我是否可以运行查询?)。另外,
mysql\u set\u charset
应该执行
set NAMES UTF8
步骤。
CREATE TABLE
guestbook`(
id
int(10)unsigned NOT NULL自动递增,
name
varchar(20)NOT NULL默认值“”,
nname
varchar(20)NOT NULL DEFAULT“”,
comments
text NOT NULL,
date
timestamp NOT NULL DEFAULT CURRENT\u timestamp,主键(
id
))ENGINE=MyISAM AUTO\u INCREMENT=91 DEFAULT CHARSET=utf8 COMMENT='simple test table'`您确定要以utf8格式向PHP脚本发送数据吗?(例如,您是否添加了
Content-Type:text/html;charset=utf-8
header或等效的meta标记?)。我认为,当您将字符集设置为MySQL连接时,它应该会解决这个问题(utf8和拉丁语内部搜索除外),但尝试创建一个新的干净表utf8/utf8\u general\u ci(而不是utf8\u bin)是值得的,插入几行并查找是否合适。不,这没有帮助(任何一个版本)
$query = sprintf("SELECT name, date FROM guestbook WHERE name='%s'", utf8_encode($name));