我从“帖子”中获取帖子详情'用PHP和JSON编码就像这样
$result_json = mysqli_fetch_all ($result, MYSQLI_ASSOC);
echo json_encode($result_json);
每个帖子都有唯一的ID
然后我又有一张名为' postsLikes'我想看一下使用mysqli_num_rows()
的帖子有多少赞但我的问题是如何将它返回的数据添加到Encoded JSON中的每个对象?
$query_checkup = "SELECT * FROM postsTable WHERE Post_AgeFrom < $age AND $age < Post_AgeTo AND Post_Reviewed = 1";
$result=mysqli_query($con, $query_checkup);
$result_json = mysqli_fetch_all ($result, MYSQLI_ASSOC);
echo "{\"result\":";
echo json_encode($result_json);
echo "}";
答案 0 :(得分:4)
在编码为json之前,您应该将额外的数据附加到数组中。
foreach ($result_json as $key => $result) {
$result_json[$key]['likes'] = getLikes();
}
echo json_encode($result_json);
您需要根据需要实现getLikes
函数,或者可以在foreach循环中执行操作。
需要注意的是:您需要查询每个产品才能获得喜欢。最好根据需要在循环中连接表格并格式化数组。
答案 1 :(得分:0)
也许您可以创建一个新数组并使用foreach结构添加以前的值和新值。
$new_array = array();
foreach($result_json as $result){
$new_array[] = array(
'id' => $result['id'],
'likes' => getlikes($result['id'])
);
}
function getlikes($id){
// your code to get likes number with mysqli_num_rows()
}
echo json_encode($new_array);
答案 2 :(得分:0)
您应该加入原始查询中的'postsLikes'表,只需一次访问数据库即可获取所需的所有数据。
这样的事情: (猜猜你的桌子是如何设置的)
$query = "
SELECT
P.* ,
L.Likes
FROM postsTable P
LEFT JOIN postsLikes L ON L.Post_id = P.Post_Id
WHERE
P.Post_AgeFrom < :age AND
:age < P.Post_AgeTo AND
P.Post_Reviewed = 1 ";
$params = array( "age" => $age );
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', $user, password);
$stmt = $pdo->prepare( $query );
$stmt->execute( $params );
$results = $stmt->fetchAll( PDO::FETCH_ASSOC );
$response = array( "results" => $results );
echo json_encode( $response );
其他建议:
1)使用绑定参数来防止SQL注入。
2)不要在响应中手动创建任何JSON,首先创建响应数组,让json_encode完成剩余的工作