首页 > 解决方案 > php pdo json 编码数组

问题描述

您好,我想在数据库的菜单内容数据中打印“标题”,但出现错误。我对json不太了解,但由于我的研究,出现了这样的东西,错误代码如下

Warning: Illegal string offset 'title' in menu.php on line 59

mysql 数据库数据 menu_content

[{"title":"HelloWord","address":"HelloAdres","phone":"HelloPhone","submenu":[{"email":"HelloSubmenuEmail","phone":"HelloSubmenuPhone","fax":"HelloSubmenuFax"}]}]

pdo

$query = $db->prepare('SELECT * FROM menu ORDER BY menu_id DESC');
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);

桌子

<tbody>
<?php foreach ($rows as $row): ?>
<tr data-id="<?= $row['menu_id'] ?>">
<td width="90"><?= $row['menu_id'] ?></td>
<td width="90"><?= $row['menu_title'] ?></td>
<td><?php json_decode($row['menu_content']['title'],true) ?></td>
<td><?= $row['menu_date'] ?></td>
</tr>
<?php endforeach; ?>
</tbody>

标签: phpjson

解决方案


您应该在尝试使用其部分之前转换 JSON 列。

<tbody>
<?php 
foreach ($rows as $row): 
    $menu = json_decode($row['menu_content']);
?>
    <tr data-id="<?= $row['menu_id'] ?>">
        <td width="90"><?= $row['menu_id'] ?></td>
        <td width="90"><?= $row['menu_title'] ?></td>
        <td><?= $menu[0]->title ?></td>
        <td><?= $row['menu_date'] ?></td>
    </tr>
<?php 
endforeach; 
?>
</tbody>

推荐阅读