-3

我想从数据库中创建一个包含多维数组的数组。该数据库有 3 个表,一张用于车辆,一张用于损坏,一张用于损坏照片。

表车辆有两列idname

表damages有四列damagesIDvehicleIDdamagesTypedamagesDescription

表damagesPhotos有三列damagesPhotoIDdamagesIDdamagesPhotoUrl

我需要将这三列组合成一个数组,如下所示:

$vehicle = array( 
   "id" => "somestring", 
   "name" => "somestring", 
   "damages" => array( 
       "damagesType" => "somestring", 
       "damagesDescription" => "somestring", 
          "photoOfDamages" => array( 
            "damagesPhotoUrl" => "somestring" 
          ) 
  ) 
); 

我的代码看起来像这样,但工作方式不正确。

$result = mysql_query( "SELECT * from vehicle v LEFT JOIN damages d ON v.id = d.vehicleID LEFT JOIN damagesPhotos p ON d.damagesID = p.damagesID WHERE d.damagesID = p.damagesID AND v.id = 1") or die(mysql_error());  

$rowsResult  = array();

while ($r = mysql_fetch_assoc($result))
    {
        $rowsResult  [] = $r;       
    }

mysql_free_result($result);

echo json_encode($rowsResult);
...
4

2 回答 2

3

您可以使用数组来做到这一点,但通过使用域对象和数据映射器来填充它们,您会获得更好的结构。

class Vehicle
{
   private $id;
   private $name;
   private $damages; // collection of Damage objects
}

class Damage
{
  private $id;
  private $type;
  private $photos; // collection of photo objects
}

class Photo
{
  private $id;
  private $imageurl;
} 

您的数据映射器将在对象上使用 setter 函数来在请求时填充数据。

于 2012-08-30T16:47:58.543 回答
1
$vehicle = array(
    "id" => "somestring",
    "name" => "somestring",
    "damages" => array(
        "type" => "somestring",
        "location" => "somestring",
        "photo" => array(
            "imageurl" => "somestring"
        )
    )
);

对于多辆车,它可能看起来更像这样:

$vehicles = array(
    0 => array(  // you can omit the numeric index, I'm just using it for clarity
        "id" => "somestring",
        "name" => "somestring",
        "damages" => array(
            "type" => "somestring",
            "location" => "somestring",
            "photo" => array(
                "imageurl" => "somestring"
            )
        )
    ),
    1 => array(
        "id" => "somestring",
        "name" => "somestring",
        "damages" => array(
            "type" => "somestring",
            "location" => "somestring",
            "photo" => array(
                "imageurl" => "somestring"
            )
        )
    )
);
于 2012-08-30T16:47:10.477 回答