Nasıl mysqli ile hazırlanmış deyimleri kullanarak birden fazla tabloları güncellemek mi?

1 Cevap php

Ben 'photo_title' ve 'photographer_name' adı niteliği ve 'photo_id' adlı gizli bir alan ile iki alanları ile bir form var. Kullanıcı Gönder düğmesini iter zaman, ben bu veritabanında iki ayrı tablo güncellemek istiyorum. Ben tek bir tabloyu güncelleştirmek için alabilirsiniz, ama en kısa sürede ikinci tablo leftjoin çalışın, onu sevmiyor.

Benim sorgu dizesi veya bağlama ile yanlış bir şey olabileceğini düşünüyorum. Hala hazırlanmış deyimleri kullanırken nasıl benim MySQL veritabanında iki ayrı tablo iki ayrı değerleri güncelleştirmek olabilir?

İşte PHP bulunuyor:

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

İşte formu bulunuyor:

<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>

1 Cevap

Bu soruyu okuyun millet yerine yukarıda Yorumlarınız onu bulma, onu görmek işte bir cevap var. Ben bunun için herhangi bir puan alamadım bu yüzden bu CW işaretlemek olacak.

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

FWIW, documentation MySQL'in UPDATE sözdizimi için açıklayıcı.