请原谅我的语言错误,我会说法语。
我在这个网站和其他地方做了一些研究,但我的发现并没有解决我的问题。
我正在做一个网站,人们可以在上面发布他们的故事。我正在开发一个页面,作者应该可以在该页面上看到他的故事和每个故事的章节。
我对两个表进行查询以获取故事和章节的标题。我有一个“故事”表,其中有每个故事的标题和摘要(以及其他内容,如 ID 和发布日期)。还有一个名为“章节”的表,其中有每一章的标题和它们所属的故事的 id。
我想稍后在我的 html 中检索这些项目,以获得类似这样的内容:
故事标题 1
第一章
第 2 章
所以我做了一个json_encode()但是JSONLint说我得到的json是无效的。 PHP 对我来说是新手,我开始学习,所以我可能没有正确编写我的代码。
这是我的代码:
<?php
session_start();
require_once('connexion_db.php');
if($db=connect()){
$userID = $_SESSION['id'];
$arr = array();
$reqRecits = $db->query('SELECT titre, id FROM recits WHERE user_id = '.$userID.'');
$resRecits = $reqRecits->fetchAll(PDO::FETCH_ASSOC);
foreach ($resRecits as $r){
$recitID = $r['id'];
$recitTitre = $r['titre'];
$reqChapitres = $db->query('SELECT id, titre_chapitre FROM chapitres WHERE recit_id = '.$r['id'].'');
$resChapitres = $reqChapitres->fetchAll(PDO::FETCH_ASSOC);
foreach ($resChapitres as $c){
$chapTitre = $c['titre_chapitre'];
}
$arr = array('titre'=>$recitTitre,'chapitre'=>$chapTitre);
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
}
}else{
echo "bdd non connectée.";
}
?>
我测试了提出的方法here ,但结果更糟。 我不知道该怎么办:(
感谢您的帮助!
最佳答案
您似乎希望内部循环更像这样:
$chapTitre = array();
foreach ($resChapitres as $c){
$chapTitre[] = $c['titre_chapitre'];
}
因此您生成的 JSON 将包含所有章节标题。
此外,就目前而言,您列出了一系列未连接的 JSON 对象,它们可能应该是一个数组才能成为合法的 JSON 对象。
foreach ($resRecits as $r){
$recitID = $r['id'];
$recitTitre = $r['titre'];
$reqChapitres = $db->query('SELECT id, titre_chapitre FROM chapitres WHERE recit_id = '.$r['id'].'');
$resChapitres = $reqChapitres->fetchAll(PDO::FETCH_ASSOC);
$chapTitre = array();
foreach ($resChapitres as $c){
$chapTitre[] = $c['titre_chapitre'];
}
$arr[] = array('titre'=>$recitTitre,'chapitre'=>$chapTitre);
}
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
将把它们全部收集起来并输出为一个列表。
[
{
'titre': 'Title 1',
'chaptitre': ['Chapter 1', 'Chapter 2']
},
{
'titre': 'Title 2',
'chaptitre': ['Chapter 1', 'Chapter 2', 'Chapter 3']
},
]
关于php - 将多个表的结果插入一个 json_encode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16360647/