Php 返回JSON对象

Php 返回JSON对象,php,json,Php,Json,下面的PHP代码用于从wamp服务器查询数据,并返回要在XML页面中使用的JSON对象 JSON数组应该包括该项目的描述、价格、数量和图像 如何回显包含从$row2和$row3检索的数据的JSON 谢谢 <?php session_start(); if(isset($_SESSION["userID"])) { //echo $_SESSION["userID"]; ?> <body> <?php include("connection_manager.ph

下面的PHP代码用于从wamp服务器查询数据,并返回要在XML页面中使用的JSON对象

JSON数组应该包括该项目的描述、价格、数量和图像

如何回显包含从$row2和$row3检索的数据的JSON

谢谢

<?php 
session_start(); 
if(isset($_SESSION["userID"]))
{
//echo $_SESSION["userID"];
?>

<body>
<?php
include("connection_manager.php");

$query1="Select * from cart where userid='".$_SESSION["userID"]."'";
$result1=mysql_query($query1);
$row1=mysql_fetch_array($result1);

$query2="Select * from store where itemid='".$row1['itemid']."'";
$result2=mysql_query($query2);
$row2=mysql_fetch_array($result2);

$query3="Select * from photos where itemID='".$row1['itemid']."'";
$result3=mysql_query($query3);
$row3=mysql_fetch_array($result3);

?>


要将关联数组输出为JSON,请使用

要输出描述$row2的JSON,请执行以下操作:

echo json_encode($row2);

您还需要将内容类型头设置为application/json。

我将使用表连接将其简化为一个返回单个数组的查询,然后在该数组上使用json_encode(请参阅)

也许是这样的:

$userId = $_SESSION['userID'];
$query = "SELECT store.*, photos.* 
            FROM cart 
            INNER JOIN store ON store.itemid = cart.itemid
            INNER JOIN photos ON photos.itemid = cart.itemid
            WHERE cart.userid='$userId'";
echo json_encode(mysql_fetch_array(mysql_query($query)));
话虽如此,请参阅这篇关于为什么不使用mysql_uu函数的帖子:

--编辑——下面是一个使用SQLite的示例;您可以将其更改为匹配要使用的任何数据库:

$db = new SQLite3("db.db");

$query = "SELECT store.description, store.price, store.quantity, photos.photo_url
            FROM cart
            INNER JOIN store ON store.item_id = cart.item_id
            INNER JOIN photos ON photos.item_id = cart.item_id
            WHERE cart.user_id=1;";
$results = $db->query($query);
$full_array = array();
while ($row = $results->fetchArray())
{
    $full_array[] = $row;
}
echo json_encode($full_array);
以及输出:

[
{
    "0": "a",
    "1": 1,
    "2": 1,
    "3": "/images/photo_1.jpg",
    "description": "a",
    "price": 1,
    "quantity": 1,
    "photo_url": "/images/photo_1.jpg"
},
{
    "0": "b",
    "1": 2,
    "2": 2,
    "3": "/images/photo_2.jpg",
    "description": "b",
    "price": 2,
    "quantity": 2,
    "photo_url": "/images/photo_2.jpg"
},
{
    "0": "c",
    "1": 3,
    "2": 3,
    "3": "/images/photo_3.jpg",
    "description": "c",
    "price": 3,
    "quantity": 3,
    "photo_url": "/images/photo_3.jpg"
},
{
    "0": "d",
    "1": 4,
    "2": 4,
    "3": "/images/photo_4.jpg",
    "description": "d",
    "price": 4,
    "quantity": 4,
    "photo_url": "/images/photo_4.jpg"
},
{
    "0": "e",
    "1": 5,
    "2": 5,
    "3": "/images/photo_5.jpg",
    "description": "e",
    "price": 5,
    "quantity": 5,
    "photo_url": "/images/photo_5.jpg"
}
]

你为什么要做3个完全独立的查询而不是连接表?很明显,用户在购物车中有商品,商店中的商品有照片,照片有一个itemID列来检索该关系。连接该关系而不是执行两个甚至三个唯一的查询会更有效。我对php不熟悉,如何简化?知道我在查询来自3个不同行的数据。不要使用phps mysql,而是使用mysqli:mysqli\u query>mysql\u query我为什么要设置内容类型?我在另一个查询中回显了JSON,但没有对其进行设置。最好是为用户代理发出正确的内容类型头,让其知道如何准确地处理响应。不过,响应主体不会改变。他需要在相同的JSON结构中使用$row2和$row3。你能帮我做些什么吗?我添加了一个可能的示例。不过,您可能不想使用内部联接。谢谢shadowfox,这真的帮了大忙,我真的很感激。shadowfox请再问一个问题,如何从商店中检索描述、价格和数量,以及从照片中检索照片?您可以在这里了解不同的SQL联接:如果我明天有时间,我可以为您详细了解它