json_decode返回NULL [{},{}]

时间:2017-02-10 00:54:52

标签: php mysql database

我用PHP从我们的数据库(用GLua输入)中提取信息,然后使用json_decode将其更改为要使用的数组,但它返回NULL,而其他的工作正在运行?

// Get the RapSheet info from 'character_data_store'
$rap = mysql_query("SELECT * FROM `character_data_store` WHERE `character_id` = '$srp_uid' AND `key`='RapSheet'");
while($rapsheet=mysql_fetch_assoc($rap)){
    $raps = $rapsheet['value'];
};

然后我用

// Deal with the rapsheet JSON
echo $raps;
$raps = json_decode($rapsheet, true);
echo var_dump($raps, TRUE);

回声是为了检查它是否正常工作,尽管var_dump返回

,但是回声时信息被成功拉出
  

NULL bool(true)

数据库内容:

[{"ArrestedBy":"James Scott","Date":1483732483,"Duration":60,"LeaveReason":"Jail time served.","ArrestReason":"test"}]

任何帮助将不胜感激!

在尝试Darren的回复之后:

我试过

$rap = mysql_query("SELECT * FROM `character_data_store` WHERE `character_id` = '$srp_uid' AND `key`='RapSheet'");
$raps = array();
    while($rapsheet=mysql_fetch_assoc($rap)){
    $raps[] = $rapsheet['value'];
};

// encode
$rap = json_encode($raps, TRUE);
echo $rap;

然后又回来了:

  

[“[{\”ArrestedBy \“:\”James Scott \“,\”Date \“:1483732483,\”Duration \“:60,\”LeaveReason \“:\”Jail time served。“ ,\ “ArrestReason \”:\ “测试\”}]“]   所以我试过

echo $rap['ArrestedBy'];

然后它返回

  

[

1 个答案:

答案 0 :(得分:1)

您正在尝试访问不在适当范围内的变量。 $rapsheet只能在while() {...循环中访问,因为它将是当前的数据行。您要做的是将$raps创建为数组并在其中插入行。从那里你可以随意json_decode()。{根据您获得的行数,您可能需要遍历$raps并解码每个数组元素。

$raps = array();
while($rapsheet=mysql_fetch_assoc($rap)){
    $raps[] = $rapsheet['value'];
};

// encode
$rap = json_encode($raps, TRUE);