Php 表内Json表
我想用json在我的MySQL(PDO)中发送3个表。第一个表中有一个循环 注: 第一个表(fetchAll) 第二个表(获取) 第三个表(获取)Php 表内Json表,php,json,pdo,Php,Json,Pdo,我想用json在我的MySQL(PDO)中发送3个表。第一个表中有一个循环 注: 第一个表(fetchAll) 第二个表(获取) 第三个表(获取) $stmt1=$db->prepare(“从countid='1'的数据中选择*); $stmt1->execute(); $data=$stmt1->fetchAll(PDO::FETCH_OBJ); $stmt2=$db->prepare(“选择id,从id='2'所在的周中选择标题”); $stmt2->execute(); $data->w
$stmt1=$db->prepare(“从countid='1'的数据中选择*);
$stmt1->execute();
$data=$stmt1->fetchAll(PDO::FETCH_OBJ);
$stmt2=$db->prepare(“选择id,从id='2'所在的周中选择标题”);
$stmt2->execute();
$data->weeks[]=$stmt2->fetch(PDO::fetch_OBJ);
$stmt3=$db->prepare(“从id='1'的用户处选择id、名称”);
$stmt3->execute();
$data->user[]=$stmt3->fetch(PDO::fetch_OBJ);
$response=新stdClass();
$response->data[]=$data;
echo json_编码($response)代码>好的,现在需要多一点代码。您必须获取所有数据
行,然后使用其中的键从其他两个表中获取相关行
$stmt = $db->prepare("SELECT * FROM data WHERE countid='1'");
$stmt->execute();
$datas = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ( $datas as $key => &$data ) {
// get related weeks data
$stmt = $db->prepare("SELECT id,title FROM weeks WHERE data_id=:id ORDER BY id");
$stmt->execute( array(':id'=>$data->id) );
$data->weeks = $stmt->fetchAll(PDO::FETCH_OBJ);
// get related user data
$stmt = $db->prepare("SELECT id,name FROM user WHERE id=:id ORDER BY id");
$stmt->execute( array(':id'=>$data->user_id) );
$data->user = $stmt->fetchAll(PDO::FETCH_OBJ);
}
echo json_encode( array('data'=>$datas) );
结果:
{
"data": [
{
"id": 1,
"title": "name of module1",
"description": "description of module 1",
"user_id": 1,
"week": "1",
"countid": 1,
"weeks": [
{
"id": 1,
"title": "Week 01"
}
],
"user": [
{
"id": 1,
"name": "chris"
}
]
},
{
"id": 2,
"title": "name of module 2",
"description": "description of module 2",
"user_id": 2,
"week": "2",
"countid": 1,
"weeks": [
{
"id": 2,
"title": "Week 02"
}
],
"user": [
{
"id": 2,
"name": "john"
}
]
}
]
}
在第一个问题中,第一个表不是数组。为了使它成为一个数组,所有的代码都需要更改,所以我提出了一个新问题。提问者回答说,他可以在一个单独的问题中回答他。似乎不需要fetchAll
,因为您在第一个查询中只选择了一行。从我的第一个查询中选择*但是哪里countid='1'
或者是否有多行countid=1
以及数据中的哪一列
表将其链接到weeks
和user
表致命错误:无法在第17行的/home/villabul/domains/yazlikvillabul.com/public_html/uyelik/test.php中使用stdClass类型的对象作为数组:$data[$key]>weeks[]=$stmt->fetchAll(PDO::FETCH_OBJ);修正了相同的致命错误:无法在/home/villabul/domains/yazlikvillabul.com/public_html/uyelik中将stdClass类型的对象用作数组/第17行的test.php