Ich erstelle eine Seite für meinen Shop, aber ich habe get_result verwendet, und nachdem ich alles abgeschlossen habe, realisierte ich, dass HostGator mir nicht erlauben konnte, mysqlnd laufen zu lassen. Also musste ich alles in bind_result umwandeln, aber ich bin hier in einer Sackgasse wahrscheinlich frustriert, dass ich alles verändern muss ...zurückgeben mehr als 1 mysql einträge mit bind_result
Wie auch immer mein Problem ist, dass ich einige Abfragen anrufe, um Tabellen zu lesen, aber das Ganze Code stoppt nach 1 Ergebnis. In diesem Code zum Beispiel rufe ich eine Liste von Terminen auf, obwohl ich wie 5 Termine in der Datenbank gesetzt habe, gibt es nur den ersten zurück. Es funktioniert wie es soll und liest aus mehreren Tabellen, stoppt aber bei 1 Schleife. Es würde mir nicht erlauben, die zweite Tabelle weiter zu lesen, wenn ich kein $ listappointments_stmt-> free_result() gemacht hätte; zuerst vor den nächsten Abfragen, also denke ich, das ist mein Problem, aber ich habe keine Ahnung, wie man um es herum arbeitet, da es mir einen booleschen Fehler gibt, wenn ich es dort nicht habe. Irgendwelche Ideen willkommen!
Vielen Dank im Voraus, Xenos K.
<?php
$query="SELECT * FROM appointments";
$listappointments_stmt=$mysqli->prepare($query);
$listappointments_stmt->execute();
$listappointments_stmt->bind_result($AppId, $AppDate, $AppTime, $AppType, $AppArtist, $AppTitle, $AppClient, $AppPrice, $AppNotes);
while ($listappointments_stmt->fetch())
{
$theDate=date("d-M-Y", strtotime($AppDate));
echo "<tr><td>".$theDate."</td>";
echo "<td>".$AppTime."</td>";
$listappointments_stmt->free_result();
$tempappointmentType=$AppType;
$query2="SELECT * FROM appointmenttypes WHERE ID=?";
$listappointmentsTypes_stmt=$mysqli->prepare($query2);
$listappointmentsTypes_stmt->bind_param("s", $tempappointmentType);
$listappointmentsTypes_stmt->execute();
$listappointmentsTypes_stmt->bind_result($AppTypeId, $AppTypeName, $AppTypeColor);
while ($listappointmentsTypes_stmt->fetch())
{
echo "<td><span class=\"label\" style=\"background-color:".$AppTypeColor."\">".$AppTypeName."</span></td>";
}
$listappointmentsTypes_stmt->free_result();
$listappointmentsTypes_stmt->close();
$tempappointmentArtist=$AppArtist;
$query3="SELECT * FROM staff WHERE ID=?";
$listappointmentsArtist_stmt=$mysqli->prepare($query3);
$listappointmentsArtist_stmt->bind_param("s", $tempappointmentArtist);
$listappointmentsArtist_stmt->execute();
$listappointmentsArtist_stmt->bind_result($ArtId, $ArtName, $ArtNickName, $ArtSurname, $ArtPhone, $ArtBirthDate, $ArtIdentificationNumber, $ArtStreetName, $ArtStreetNumber, $ArtPostalCode, $ArtCity, $ArtCountry, $ArtPosition, $ArtEmail, $ArtFacebook, $ArtInstagram);
while ($listappointmentsArtist_stmt->fetch())
{
echo "<td>".$ArtName." ".$ArtNickName." ".$ArtSurname."</td>";
}
$listappointmentsArtist_stmt->free_result();
$listappointmentsArtist_stmt->close();
echo "<td>".$AppTitle."</td>";
$tempappointmentClient=$AppClient;
$query4="SELECT * FROM clients WHERE ID=?";
$listappointmentsClient_stmt=$mysqli->prepare($query4);
$listappointmentsClient_stmt->bind_param("s", $tempappointmentClient);
$listappointmentsClient_stmt->execute();
$listappointmentsClient_stmt->bind_result($CliId, $CliName, $CliSurname, $CliPhone, $CliBirthDate, $CliIdentificationNumber, $CliStreetName, $CliStreetNumber, $CliPostalCode, $CliCity, $CliCountry, $CliFathersFullName, $CliMothersFullName, $CliEmail, $CliFacebook, $CliInstagram, $CliNotes);
while ($listappointmentsClient_stmt->fetch())
{
echo "<td>".$CliName." ".$CliSurname."</td>";
echo "<td>".$CliPhone."</td>";
}
$listappointmentsClient_stmt->free_result();
$listappointmentsClient_stmt->close();
echo "<td>".$AppPrice."</td>";
echo "<td><a href=\"appointmentsedit.php?appointmentStatus=view&appointmentId=".$AppId."\" title=\"".$lang['view']."\"><i class=\"text-green fa fa-eye\"></i></a></td>";
echo "<td><a href=\"appointmentsedit.php?appointmentStatus=edit&appointmentId=".$AppId."\" title=\"".$lang['edit']."\"><i class=\"text-blue fa fa-edit\"></i></a></td>";
echo "<td><a href=\"appointmentsedit.php?appointmentStatus=delete&appointmentId=".$AppId."\" title=\"".$lang['delete']."\"><i class=\"text-red fa fa-trash-o\"></i></a></td></tr>";
}
$listappointments_stmt->close();
?>
Vielen Dank für die Information Ollie. Eine extra Verbindung herzustellen und das free_result zu verschieben, hat den Trick gemacht. Ich werde den Select * am Endprodukt natürlich ändern und werde in JOIN kommen, wie du erwähnt hast. Danke nochmal! –