2014-04-17 15 views
0

아래 PHP 코드는 wamp 서버의 데이터를 쿼리하고 XML 페이지에서 사용할 JSON 객체를 반환하는 데 사용됩니다.JSON 객체를 반환하는 경우

JSON 배열에는 설명, 가격, 수량 및 해당 항목의 이미지가 포함되어야합니다.

$ row2 및 $ row3에서 검색된 데이터가 포함 된 JSON을 반향하는 방법은 무엇입니까?

덕분에 출력 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); 

?> 
+0

당신은 테이블을 조인하는 대신 3 개 완전히 별도의 쿼리를하고있는 이유가 거기에 당신은 당신이 사용하기 원하는 데이터베이스와 일치하도록 변경할 수 있습니까? 사용자가 장바구니에 항목을 갖고 상점에있는 항목에 사진이 있고 사진에 해당 관계를 검색하는 itemID 열이 있다는 것은 분명합니다. 두 개 또는 세 개의 고유 쿼리를 수행하는 대신 그 관계에 참여하는 것이 더 효율적입니다. – skrilled

+0

php에 익숙하지 않은 이유는 어떻게 단순화 할 수 있습니까? 3 개의 다른 행에서 데이터를 쿼리하는 것입니다. – user3476925

+0

phps mysql을 사용하지 마십시오. 대신 mysqli를 사용하십시오 : http://stackoverflow.com/a/14110189/1612852 mysqli_query> mysql_query – stepquick

답변

2

, 출력 $ ROW2 설명하는 JSON json_encode

를 사용 : 당신은 또한 콘텐츠 형식을 설정해야

echo json_encode($row2); 

을 헤더를 application/json으로 보냅니다.

는 나는 테이블을 사용
+0

왜 Content-Type을 설정해야합니까? 나는 JSON을 설정하지 않고 다른 쿼리에서 echo했다. – user3476925

+0

사용자 에이전트가 응답을 정확하게 처리하는 방법을 알기 위해 올바른 content-type 헤더를 발행하는 것이 항상 더 좋습니다. 응답 본문은 변경되지 않습니다. – ibtarek

+0

그는 동일한 JSON 구조에서 $ row2와 $ row3이 필요합니다. – shadowfox

0

다음과 같은

아마도 뭔가 그 배열로 json_encode을 (http://www.php.net/manual/en/function.json-encode.php 참조)를 사용, 하나의 배열을 반환하는 단일 쿼리로이 문제를 단순화하기 위해 조인 :

$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_ 함수를 사용하지 않는 이유에 대한 글을 참고하십시오 : Why shouldn't I use mysql_* functions in PHP?

- EDIT-- 다음은 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" 
} 
] 
+0

그걸로 더 많은 도움을받을 수 있습니까? – user3476925

+0

나는 그것이 어떻게 생겼는지에 대한 예를 추가했습니다. 내부 조인을 사용하지 않을 수도 있습니다. – shadowfox

+0

정말 도움이되는 shadowfox에게 감사드립니다. 정말 고맙습니다. – user3476925

관련 문제