Wenn ich Sie richtig verstanden habe, ist die Tabelle tPCN
kann mehrere Zeilen enthalten, die jeder PCR-Nummer zugeordnet sind. Und Sie möchten alle diese Zeilen abrufen und in Ihrem JSON zurückgeben.
Wenn Sie das erreichen wollen, aber auch sicherstellen möchten, dass die anderen beiden Tabellen nur eine Zeile zurückgeben, dann sollten Sie meiner Meinung nach einfach den JOIN zu tPCN
entfernen in Ihrer ersten Abfrage und erstellen Sie dann eine zweite Abfrage, um den tPCN
abzurufen Zeilen speziell.
$output = [];
$stmt = $dbConnected->prepare("SELECT * FROM change_management.tPCR INNER JOIN change_management.tcomplement ON change_management.tPCR.PCRNo = change_management.tcomplement.PCRNo WHERE tPCR.PCRNo = ?");
$stmt->bind_param('s', $_POST['pcr_number']);
$stmt->execute();
$result = $stmt->get_result();
//select a single row from the result and assign it as the output variable
if ($row = $result->fetch_assoc()) {
$output = $row;
}
$stmt2 = $dbConnected->prepare("SELECT * FROM change_management.tPCN WHERE PCRNo = ?");
$stmt2->bind_param('s', $_POST['pcr_number']);
$stmt2->execute();
$result2 = $stmt2->get_result();
$output["tPCN"] = array(); //create a new property to put the tPCN rows in
//loop through all the tPCN rows and append them to the output
while ($row2 = $result2->fetch_assoc()) {
$output["tPCN"][] = $row2;
}
echo json_encode($output);
Dies erzeugt JSON mit dieser Art von Struktur:
{
"PCRNo": "ABC",
"CreationDate": "2019-08-07",
"Name": "A N Other",
//...and all your other properties, until the new one:
"tPCN": [
{
"SomeProperty": "SomeValue",
"SomeOtherProperty": "SomeOtherValue",
},
{
"SomeProperty": "SomeSecondValue",
"SomeOtherProperty": "SomeOtherSecondValue",
}
]
}
Anschließend müssen Sie Ihren JavaScript-Code anpassen, um mit der neuen Struktur umgehen zu können. Da ich nicht genau weiß, welche Felder aus dem tPCN
kommen table, ich kann Ihnen kein Beispiel dafür geben, aber hoffentlich ist klar, dass Sie das Array durchlaufen und für jeden gefundenen Eintrag denselben HTML-Code ausgeben müssen.
Hinweis:Wie Sie sehen können, habe ich den Abfragecode neu geschrieben, um vorbereitete Anweisungen und parametrisierte Abfragen zu verwenden, sodass Sie sehen können, wie Sie Ihren Code in Zukunft auf sichere Weise schreiben können.
P.S. Sie haben dort in der "success"-Funktion viel Code, nur um die Werte einzelner Felder festzulegen. Vielleicht möchten Sie eine einfache JS-Template-Engine verwenden, um dies weniger ausführlich und umständlich zu machen, und den HTML-Code generieren, den Sie benötigen, wobei die Werte automatisch an der richtigen Stelle hinzugefügt werden. Aber das ist ein separates Thema, nur für die Wartbarkeit Ihres Codes