2015-07-29 4 views
2

Хорошо, я пытаюсь обновить таблицу в зависимости, если он принадлежит пользователю, поэтому в одной таблице, например, у меня есть фотографии, например, так:Обновление одной таблицы, если другой идентификатор таблицы соответствует

 
+----------------------------------------------------+ 
| picture_id | picture_user | picture_title | 
+----------------------------------------------------+ 

и в другой таблице у меня есть:

 
+--------------------------------------------------------------+ 
| delete_pic_id | delete_pic_user | delete_pic_status | 
+--------------------------------------------------------------+ 

теперь я хочу, чтобы обновить delete_pic_status только если delete_pic_user соответствует picture_user

Вот что я имею в виду, но нужна помощь:

$manage_application = $database->prepare(
      "UPDATE deleted_pic 
       SET delete_pic_status=1 
      WHERE delete_pic_user(the other table)=the id"); 

Как бы идти о выполнении этого

+0

Вы хотите, чтобы сделать это для всех пользователей или только одного конкретного пользователя – RiggsFolly

+0

Только один пользователя у меня есть переменной сессии, я буду сравнивая picture_user, чтобы удостовериться, что он владеет им. –

ответ

2

Использование Exists

UPDATE deleted_pic 
SET delete_pic_status = 1 
WHERE EXISTS (SELECT 1 
       FROM other_table ot 
       WHERE ot.picture_user = deleted_pic.delete_pic_user) 
1
UPDATE deleted_pic SET delete_pic_status=1 WHERE 
delete_pic_user in (select picture_user from myOthertable) 
1

Я предполагаю, что вы используете PDO и у вас есть идентификатор пользователя в переменной сеанса, может использовать параметризованный запрос, подобный этому

$sth = $database->prepare("UPDATE deleted_pic 
           SET delete_pic_status = 1 
          WHERE delete_pic_user = :id"); 

$result = $sth->execute(array(':id' => $_SESSION['userId'])); 

if ($result) { 
    // the delete worked 
} else { 
    // the delete failed 
} 
0

Ниже запрос будет выполнить ваше need- обновление

все строки на основе проверки наличия в другой таблице

UPDATE deleted_pic dp 
JOIN other_table ot ON ot.picture_user = dp.delete_pic_user 
SET delete_pic_status = 1; 

обновление данных одной таблицы в другую таблицу для всех rows- обновления

UPDATE deleted_pic dp 
JOIN other_table ot ON ot.picture_user = dp.delete_pic_user 
SET dp.column1 = ot.column5; 

данные одной таблицы в другой таблице для конкретных строк -

UPDATE deleted_pic dp 
JOIN other_table ot ON ot.picture_user = dp.delete_pic_user 
SET dp.column1 = ot.column5 
where dp.status=1; 
0

UPDATE deleted_pic SET delete_pic_status = 1 ГДЕ deleted_pic.delete_pic_user в (SELECT picture_user из tab2)

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