2009-06-13 59 views
0

我有一個名稱屬性爲'photo_title'和'photographer_name'的兩個字段以及一個名爲'photo_id'的隱藏字段。當用戶按下提交按鈕時,我希望它更新數據庫中的兩個單獨的表。我可以讓它更新單個表格,但只要我嘗試離開第二個表格,它就不喜歡它。如何使用mySQLi準備語句更新多個表?

我認爲我的查詢字符串或綁定可能有問題。我怎樣才能更新我的Mysql數據庫中兩個單獨的表中的兩個單獨的值,同時仍然使用預準備語句?

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

這裏的形式:

<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

我想出了我的錯誤。我有錯誤的順序SQL命令。查詢字符串應該已經閱讀 $ SQL =「更新照片 \t \t \t \t LEFT JOIN攝影師 \t \t \t \t ON photos.photographer_id = photographers.photographer_id \t \t \t \t SET photos.photo_title =?,photographers.photographer_name =? \t \t \t \t WHERE photos.photo_id =?'; – zeckdude 2009-06-13 04:14:11

回答

2

這裏有一個答案讓誰看這個問題的人看的,而不是在上面您的評論發現它它。我會標記這個CW,所以我沒有得到任何積分。

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

FWIW,MySQL的UPDATE語法的documentation是說明性的。