2017-02-10 97 views
2

我从我们的数据库(与GLua输入)与PHP的信息,然后使用json_decode将其更改为数组使用,但它返回NULL,而其他人是加工?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布尔(真)

数据库内容:

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

任何帮助将不胜感激!


试图达伦的响应后:


我试图

$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 \“: “詹姆斯·斯科特”,“日期”:148373248 3,\ “持续时间\”:60 \ “LeaveReason \”:\ “监狱的时间送达\”,\ “ArrestReason \”:\ “测试\”}]“] 所以,我想

echo $rap['ArrestedBy']; 

,并返回

[

回答

1

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

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

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

您好,我想这一点,但我仍然无法得到它的工作:( $ RAP =请求mysql_query(“SELECT * FROM'character_data_store' WHERE'character_id' = '$ srp_uid' 和'关键'= 'rapSheet'“); \t $斥责=阵列(); \t \t而($ rapsheet = mysql_fetch_assoc($ RAP)){ \t \t $斥责[] = $ rapsheet [ '值']; \t \t echo $ raps ['ArrestedBy']; \t}; – JamesScott

+0

请将您的代码保留在您的答案中( *不是评论哈哈*)。什么没有用? – Darren

+0

对不起达伦,通常不是一个stackoverflow的人!此外,它不会回应任何:/ – JamesScott