更改编码后MySQL会抛出错误

时间:2011-05-23 12:43:55

标签: php mysql character-encoding

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

我有以下php代码

<?php
mysql_connect("localhost","admin","***");
mysql_select_db("DbName");
$sql=mysql_query("select * from `menu`");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>

将数据库的编码更改为UTF8-general_ci后,此代码无效。为了使用我的新数据库编码处理我的PHP代码,我该怎么办?

它返回消息:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

1 个答案:

答案 0 :(得分:4)

我的猜测是你的数据库连接仍然是ISO-8859-1,而json_encode()需要UTF-8数据(如果遇到无效字符,则会中断)。

尝试在连接数据库后发送以下查询:

如果您使用的是mySQL&lt; 5.0.7:

mysql_query("SET NAMES utf8;");

如果您使用的是较新的mySQL:

mysql_set_charset("utf8");