2017-02-10 2 views
2

Я извлекаю информацию из нашей базы данных (введенную с помощью GLua) с помощью PHP, а затем с помощью json_decode, чтобы изменить ее на массив, с которым работает, но он возвращает NULL, тогда как другие за работой?json_decode return 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 (истина)

Содержимое базы данных:

[{"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 \": \ "время Jail служил \.", \ "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

Привет, я попытался это, но я до сих пор не могу заставить его работать :( $ реп = mysql_query ("SELECT * FROM' character_data_store' WHERE ключа 'character_id' = '$ srp_uid' AND' '= 'rapSheet'"); \t $ рапс = массив(); \t \t в то время как ($ rapsheet = mysql_fetch_assoc ($ РПД)) { \t \t $ рапс [] = $ rapsheet [ 'значение']; \t \t echo $ raps ['ArrestedBy']; \t}; – JamesScott

+0

Сохраните свой код в ответе (* не комментарии haha ​​*). Что не сработало? – Darren

+0

Привет, дорогой, Даррен, обычно не человек, занимающийся штабелем!Кроме того, он ничего не повторяет:/ – JamesScott

Смежные вопросы