我使用PHP作爲後端和MySql數據庫,我有這麼多的一對多關係如何獲取數組從多到許多relatioship
Drivers{
id,
name
}
Units{
id,
name
}
Driver_Units{
id,
unitId,
driverId
}
當我運行腳本獲得驅動程序詳細反對通過驅動程序ID,我想有像這樣的JSON響應
{
firstName: driver_firstName,
lastName: driver_lastName
units: [unitObject1, unitObject2, unitObject...]
}
所以我想在一個響應中有驅動程序對象和他的單位對象的數組。 我是PHP和MySql的初學者,我希望有人擅長使用此腳本來幫助我,並告訴我是我當前的腳本「很好」,以及如何獲取單元對象數組作爲此響應的一部分,以及通常如何我可以改進這個腳本。
編輯:
我試圖解決方案,我得到了在這個問題的答案,我有這樣的
<?php
require_once '../../dbConnect.php';
$driver_id = '%';
if (isset($_GET['driver_id'])) {
$driver_id = $_GET['driver_id'];
}
$driver_id = 3; //hardcode to test it
$stmt = $mysqli->prepare("
SELECT d.firstName, d.lastName, u.make, u.model FROM drivers AS d
LEFT JOIN drivers_units AS du ON d.driver_id = du.driverId
LEFT JOIN units AS u ON u.unit_id = du.unitId
WHERE d.driver_id = ?");
if($stmt) {
$stmt->bind_param("i", $driver_id);
$stmt->execute();
$stmt->bind_result($first_name, $last_name, $unit_make, $unit_model);
$driver = null;
while ($stmt->fetch()) {
if (empty($driver)) { // On first row populate all the driver info
$driver = array(
'firstName' => $first_name,
'lastName' => $last_name,
'units' => array()
);
}
if ($unit_name) {
$driver['units'][] = array(
'make' => $unit_make,
'model' => $unit_model
);
}
}
$mysqli->close();
echo $json_response = json_encode($driver);
}
?>
代碼,但這個代碼返回我一個NULL,所以它就像我不從這個查詢中得到任何東西。
我送driver_id使用Ajax POST方法,我會試試這個,並檢查它是否工作正常,謝謝你的快速回答。 –
如果你正在使用POST方法,那麼它應該是'$ _POST ['id']',而不是'$ _GET ['id']' – Barmar
對不起,我使用ajax GET方法,因爲這是獲取驅動程序和腳本的腳本。我使用POST插入腳本。 –