2009-06-13 3 views
0

У меня есть форма с двумя полями с атрибутом name '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 = «UPDATE фотографии \t \t \t \t LEFT JOIN фотографы \t \t \t \t НА photos.photographer_id = photographers.photographer_id \t \t \t \t SET photos.photo_title =?, Photographers.photographer_name знак равно \t \t \t \t ГДЕ photos.photo_id =? '; – zeckdude

ответ

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, то documentation синтаксиса UPDATE в MySQL показателен.

Смежные вопросы