Der Benutzer kommt zu dieser Seite von einer anderen Seite, wo sie auf einen Link klicken und es wird eine ?photo_id=
und dann die ID-Nummer angehängt. Ich möchte, dass bestimmte Informationen für den Betrachter verfügbar sind, wenn sie auf dieser Seite ankommen.Wie funktioniert ein leftjoin bei Verwendung einer initialisierten vorbereiteten Anweisung für MySQLI?
Ich möchte, dass sie das Foto, den Foto-Namen und den Namen des Fotografen sehen können. Die ersten beiden sind kein Problem, denn die photo_id
, photo_filename
und sind alle in der gleichen Tabelle. Sobald ich versuche, Informationen über dieses Foto zu bekommen, das sich auf einem anderen Tisch namens photographers
befindet, habe ich Probleme.
Hier ist mein Code:
$sql = 'SELECT photos.photo_id, photos.photo_title, photos.photo_filename, photos.photographer_id, photographers.photographer_id, photographers.photographer_name
FROM photos
LEFT JOIN photographers ON photos.photographer_id = photographers.photographer_id
WHERE photo_id = ?';
//initialize prepared statement
$stmt = $conn->stmt_init();
if ($stmt->prepare($sql)) {
$stmt->bind_param('i', $_GET['photo_id']);
$stmt->bind_result($photo_id, $photo_title, $photo_filename, $photographer_id);
$OK = $stmt->execute();
$stmt->fetch();
}
Die ersten drei Variablen ($photo_id
, $photo_title
und $photo_filename
) funktionieren und ich kann sie auf meiner Seite Echo aus, aber die anderen Variablen, die ich aus dem LEFTJOIN so zugegeben, als photographers.photographer_id
und photographers.photographer_name
, die aus einer anderen Tabelle sind, wird nicht funktionieren. Wie es bekannt ist, bricht die Seite vollständig, wenn ich die zusätzlichen Spaltennamen in der SELECT-Zeile hinzufüge.
Ich habe das Gefühl, es hat etwas mit der Anzahl der Variablen in der bind_result()
Funktion. Ich denke, sie müssen die Anzahl der Spalten in der SELECT-Zeile übereinstimmen, aber ich möchte nicht wirklich eine Variable für jede erstellen.
Kann mir jemand helfen?