2009-06-13 6 views
0

Ich habe ein Formular mit zwei Feldern mit dem Namenattribut 'photo_title' und 'photographer_name' und einem versteckten Feld namens 'photo_id'. Wenn der Benutzer die Übermittlungsschaltfläche drückt, möchte ich zwei separate Tabellen in der Datenbank aktualisieren. Ich kann es bekommen, um eine einzelne Tabelle zu aktualisieren, aber sobald ich versuche, der zweiten Tabelle beizutreten, mag es das nicht.Wie aktualisiere ich mehrere Tabellen mit vorbereiteten Anweisungen mit mySQLi?

Ich denke, dass etwas mit meiner Abfragezeichenfolge oder der Bindung falsch sein kann. Wie kann ich zwei separate Werte in zwei separaten Tabellen in meiner Mysql-Datenbank aktualisieren, während ich noch vorbereitete Anweisungen verwende?

Hier ist der PHP:

if (array_key_exists('update', $_POST)) { 

$sql = 'UPDATE photos SET photos.photo_title = ?, photographers.photographer_name = ? 
    LEFT JOIN photographers ON photos.photographer_id = photographers.photographer_id 
    WHERE photo_id = ?'; 

$stmt = $conn->stmt_init(); 
if ($stmt->prepare($sql)) { 
    $stmt->bind_param('ssi', $_POST['photo_title'], $_POST['photographer_name'], $_POST['photo_id']);  
    $done = $stmt->execute(); 
    } 
} 

Hier ist die Form:

<form id="form1" name="form1" method="post" action=""> 
    <input name="photo_title" type="text" value=""/> 
    <textarea name="photographer_name"></textarea> 

    <input type="submit" name="update" value="Update entry" /> 
    <input name="photo_id" type="hidden" value="<?php echo $photo_id ?>"/> 
</form> 
+0

Ich habe meinen Fehler herausgefunden. Ich hatte die SQL-Befehle in der falschen Reihenfolge. Der Query-String sollte $ sql = ‚UPDATE Fotos \t \t \t \t LEFT JOIN Fotografen \t \t \t \t ON photos.photographer_id = photographers.photographer_id \t \t \t \t SET photos.photo_title =?, Photographers.photographer_name lesen =? \t \t \t \t WHERE fotos.photo_id =? '; – zeckdude

Antwort

2

Hier eine Antwort ist so Leute, die diese Frage sie sehen zu lesen, statt darüber in Ihrem Kommentar zu finden. Ich werde dieses CW markieren, damit ich keine Punkte dafür bekomme.

UPDATE photos LEFT JOIN photographers 
    ON photos.photographer_id = photographers.photographer_id 
SET photos.photo_title = ?, photographers.photographer_name = ? 
WHERE photos.photo_id = ? 

FWIW, die für documentation MySQLs UPDATE Syntax ist veranschaulichend.