只有几个数据库列中的一个在json中变为null

时间:2013-01-12 16:51:10

标签: php mysql json

我正在尝试复制以前一直使用的网络服务。它从mySQL数据库获取数据,然后在json中回显它。它曾经多次使用过,但现在我似乎无法让它发挥作用。

我的数据库设置如下(我知道它是瑞典语,但希望你能得到它):

#   Kolumn  Typ Kollationering  Attribut    Null    Förvalt
1   id  int(11)         Nej Inget   AUTO_INCREMENT     
2   desk    text    utf8_swedish_ci     Ja  NULL
3   info    varchar(4)  utf8_swedish_ci     Ja  NULL

然后我的php页面设置如下:

$query = "SELECT * 
FROM  `$table`
LIMIT 100
";
$result = mysql_query($query,$conn) or die('Errant query:  '.$query);

$posts = array();
if(mysql_num_rows($result)) {
while($post = mysql_fetch_assoc($result)) {
  $posts[] = array('post'=>$post);
}
}

header('Content-type: application/json');
echo json_encode(array('posts'=>$posts));

我得到的结果很奇怪:

{"posts":[{"post":{"id":"1","desk":"blablabla","info":"4353"}},{"post":    {"id":"2","desk":**null**,"info":"3413"}}]}

我得到一个空结果,我实际上在数据库中有一些东西,它似乎与瑞典语中的“åäö”-chars有关,但这在以前从来就不是问题。我实际上尝试从另一个数据库导出一个表,在那里我尝试了同样的事情,直到我开始输入新的值才有效。

有什么想法?

编辑:这是目前数据库中的两个值。

desk    info
fragannanananana    4353
arhåaöafghsgjädsiahäkömgdsjnö   3413

1 个答案:

答案 0 :(得分:1)

我解决了。只需要添加mysql_query('SET CHARACTER SET utf8');它就像一个魅力!