即使数据在数据库中可用,SQL也会返回空元组


SQL returns empty tuple even when data is available in database

我使用XML文件通过php将数据加载到数据库中。因为xml文件有很多utf8字符,所以我使用以下SQl命令来更改我的表以接受utf8个字符:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

我成功地输入了数据,但是数据库中的名字显示得很奇怪。示例:

Jääskeläinen shows up as Jääskeläinen

此外,对于像Jones这样的普通名称,如果我使用查询select 'name' from players where 'name' LIKE '%n%';,则结果集是0,这是不正确的。我只能通过pid搜索,例如:如果我使用查询select 'name' from 'players' where pid = 453; ,我会得到结果Jones

有人能向我解释一下我为什么会犯这个错误吗?

XML文件如下所示:

<?xml version="1.0" encoding ="utf8"?>
<pages>
<link>
<name> Cech </name>
<club> Chelsea </club>
<points> 49 </points>
</link>

php代码加载XML文件并将数据输入数据库

我通过php解决了这个问题,因为基本上我是通过php检索和操作数据的。在我使用在php文件中设置连接之后

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

放入以下内容。

  mysql_set_charset('ISO-8859-1',$conn);

请注意,字符集设置为ISO-8859-1而不是utf8