2

MySQL データベースから JSON 文字列の形式でデータを取得しようとしています。

私はこの答えを読みました:JSONはMySQLの結果をエンコードします

ただし、これは 1 つのテーブルに限定されます。複数のテーブル (userDetails からの名前、UserPurchases からの購入データなど) からデータを取得したい場合はどうすればよいですか? カスタム文字列を作成して、複数のテーブルからデータを取得し、単一のテーブルのみからのように json 文字列を作成するにはどうすればよいですか?

 $query = "SELECT * FROM `thing` WHERE `id` = :thingId";
    $stmt = $dbh->prepare ( $query );
    $stmt->bindParam ( ":thingId" , $_GET['thingId']  );
    $stmt->execute ( );
    $rslt  =  $stmt->fetch ( );
    $thingName  = $rslt['name'];
    $thingOwnerId = $rslt['userId'];
    $thingDescription = $rslt['thingDescription'];

// Getting the thing owner details
    $query = "SELECT * from `user` WHERE ( `id` = :id ) ";    
    $stmt = $dbh->prepare( $query );
    $stmt->bindParam ( ":id" , $thingOwnerId );
    $stmt->execute(  );
    $rslt = $stmt->fetch ( );
    $thingOwnerName = $rslt['firstName']." ".$rslt['lastName'];

ここで、個別のテーブルからのこのデータから単一の json を強力にする方法を説明します。文字列には、thingName、thingOwnerId、thingDescription、thingOwnerName が含まれている必要があります。

4

3 に答える 3

1

PHP でクラスを作成し、データベースの値をこのクラスに設定し、JSON にエンコードすることもできます。

<?php

class MyCustomJson
{
    public $userId;
    public $thingId;
    //and go on...
}

//set db values to this class
$myCustomJson = new MyCustomJson();
//..read data from User table and set table values to your custom object
$myCustomJson->userId = $row["id"];
//..read data from Thing table and set table values to your custom object
$myCustomJson->thingId = $row["id"];

//and encode your custom object to json
echo json_encode($myCustomJson);
?>
于 2013-11-07T00:20:43.837 に答える
0

それらが異なるクエリである場合は、結果をマージして、その配列を次のようにエンコードできます。

$merged = array();

 $query = "SELECT * FROM `thing` WHERE `id` = :thingId";
    $stmt = $dbh->prepare ( $query );
    $stmt->bindParam ( ":thingId" , $_GET['thingId']  );
    $stmt->execute ( );
    $rslt  =  $stmt->fetch ( );
$merged['thing'] = $rslt;    

// Getting the thing owner details
    $query = "SELECT * from `user` WHERE ( `id` = :id ) ";    
    $stmt = $dbh->prepare( $query );
    $stmt->bindParam ( ":id" , $thingOwnerId );
    $stmt->execute(  );
    $rslt = $stmt->fetch ( );
$merged['user'] = $rslt;

echo json_encode($merged);
于 2013-11-07T00:17:35.933 に答える