2009-06-13 5 views
0

J'ai un formulaire avec deux champs avec les attributs name de 'photo_title' et 'photographer_name', et un champ caché nommé 'photo_id'. Lorsque l'utilisateur appuie sur le bouton Envoyer, je souhaite qu'il mette à jour deux tables distinctes dans la base de données. Je peux l'obtenir pour mettre à jour une seule table, mais dès que j'essaye de rejoindre la deuxième table, ça ne me plaît pas.Comment mettre à jour plusieurs tables en utilisant des instructions préparées avec mySQLi?

Je pense qu'il y a peut-être un problème avec ma chaîne de requête ou la liaison. Comment puis-je mettre à jour deux valeurs séparées dans deux tables distinctes dans ma base de données Mysql tout en utilisant des instructions préparées?

Voici le 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(); 
    } 
} 

est ici la forme:

<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

J'ai compris mon erreur. J'ai eu les commandes SQL dans le mauvais ordre. La chaîne de requête doit avoir lu $ les photos UPDATE sql = \t \t \t \t LEFT JOIN photographes \t \t \t \t SUR photos.photographer_id = photographers.photographer_id \t \t \t \t SET photos.photo_title =?, Photographers.photographer_name =? \t \t \t \t OERE photos.photo_id =? '; – zeckdude

Répondre

2

est ici une réponse pour que les gens qui lisent cette question voient, au lieu de trouver dans votre commentaire ci-dessus. Je vais marquer ce CW donc je ne reçois aucun point pour cela.

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

FWIW, la documentation pour la syntaxe UPDATE de MySQL est une illustration.