Я изучаю PHP PDO с MySQL и хотел знать, как обновить несколько таблиц с помощью одного запроса на обновление, связанного из одной строки в таблице 1.
Пример, если я хотел обновить значение в таблице 2 и / или 3 одним запросом, зная только таблицу 1, записывающую идентификатор PK. Я подумал, что, возможно, смогу использовать Left Join, но не смог сделать это правильно. Мне не нужно использовать Left Join, просто хочу максимально оптимизировать кодирование.
пример кода, который не приводит к каким-либо изменениям. Я считаю, что это не правильно ссылки.
** Что я хочу из кода: обновить значения в определенных строках таблицы 2,3 и т. Д., Зная только PK из таблицы 1, который имеет внешние ключи таблицы 2,3.
$updt = $db->prepare("UPDATE t3 LEFT JOIN t1 ON t1.table3_fk =
t3.table3_id SET t3.fooTable3=:VAR1, t3.barTable3=:VAR2 WHERE
t1.table1_id = :VARID");
$updt->bindParam(':VAR1', $VAR1, PDO::PARAM_STR);
$updt->bindParam(':VAR2', $VAR2, PDO::PARAM_STR);
$updt->bindParam(':VARID', $VARID, PDO::PARAM_STR);
$updt->execute();
Структура таблицы:
t1 t2 t3
table1_id(PK) table2_id(PK) table3_id(PK)
table2_fk fooTable2 fooTable3
table3_fk barTable3
Пример записи:
t1 t2 t3
22 10 14
10 someabcdata somedefdata
14 someefgdata
Любая помощь будет отличной, спасибо.
Edit1: я пытался опубликовать изображение макета таблицы, но, к сожалению, у меня не было достаточно точек репов по этому сайту. И все же спасибо за ссылку.
Edit2: объяснил более подробно
Edit3: избавился от изображения для удобства просмотра
Ваш код содержит опечатку. В первом утверждении ваша переменная называется $updtt
но последующие заявления используют $updt
,
Других решений пока нет …