php - json_decode 返回 NULL [{},{}]

标签 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);

echo 是为了检查它是否正常工作,虽然 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\":\"test\"}]"] So I tried

echo $rap['ArrestedBy'];

它返回了

[

最佳答案

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

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

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

关于php - json_decode 返回 NULL [{},{}],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149735/

相关文章:

PHP递归函数问题

php - 无法使用 xPath + PHP 将 HTML 节点的 outerHTML 存储到变量中

mysql - 无法使用 mysql 命令行使用 Unicode 字符

php - 在具有 30,000 条记录的 mysql 表中查找数据

database - 分布式主键-UUID,简单的自动增量还是自定义的顺序值?

php - onClick 重新加载 div 中的图像

php - 在wordpress中通过url传递变量

mysql - 更改工作台 EER 图中表的数据库名称

MYSQL 服务器在安装时失败

mysql - 不分组选择