我正在学习使用MySQL的PHP PDO,并想知道如何使用从表1中的一行链接的一个update查询来更新多个表。例如,如果我想用一个只知道表1记录PK id的查询更新表2和/或3中的值,我想也许我可以使用Left Join,但无法得到正确的结果。我不需要使用左联接,只需要最优化的编码。
没有导致任何更改的示例代码。我认为它的链接不正确。
**我希望从代码中得到什么:更新表2,3等中特定行的值。。通过仅从具有表2、3的外键的表1中知道PK。
$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
任何帮助都将是伟大的,谢谢。
第1版:我确实试着发布了一张表格布局的图片,但不幸的是,根据这个网站,我没有足够的代表点。谢谢你的链接。
第2版:详细解释
第3版:去掉图像以便于查看
您的代码包含一个拼写错误。在第一个语句中,变量被称为$updtt
,但随后的语句使用$updt
。