【问题标题】:PHP PDO UPDATE MySQL Multiple TablesPHP PDO UPDATE MySQL 多表
【发布时间】:2015-11-17 02:07:30
【问题描述】:

我正在学习使用 MySQL 的 PHP PDO,并且想知道如何使用从表 1 中的单行链接的一个更新查询来更新多个表。 例如,如果我想用一个只知道表 1 记录 PK id 的查询来更新表 2 和/或 3 中的值。我想也许我可以使用左连接,但不能正确。我不需要使用左连接,只需要最优化的编码。

不会导致任何更改的示例代码。我相信它没有正确链接。

**我希望从代码中得到什么:更新表 2,3 等特定行中的值。通过只知道表 1 中具有表 2,3 的外键的 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

任何帮助都会很棒,谢谢。

Edit1:我确实尝试过发布一张表格布局的图片,但不幸的是,根据这个网站,我没有足够的代表点数。不过感谢您的链接。

Edit2:解释得更详细

Edit3:去掉图片以便于查看

【问题讨论】:

  • 您应该在问题中发布您的表格布局,因为这样我们更容易访问,而不是离开网站查看其他信息 - 这样的事情可能会对您有所帮助正确格式化ozh.github.io/ascii-tables
  • 提供有关“不起作用”的更多详细信息?你期望它做什么?它做了什么?
  • 您的表在您的代码中的名称与您的图像中的名称不同。如果t1 是一个短名称,则代码将为UPDATE table_long_name t1 ...
  • 我为造成的混乱道歉。那张桌子就是我所拥有的一个简单的例子。当我测试代码时,名称确实匹配但没有成功。为了便于查看,我在帖子中输入了表格并去掉了图片链接。
  • 为了消除 PHP 代码中出现错误的可能性,请尝试使用 MySQL 命令行客户端手动查询。从手动查询中发布状态报告(更新了多少行)。如果结果是更新了 0 行,请将 UPDATE 替换为 SELECT * FROM 并查看 SELECT 是否返回任何行。如果手动 UPDATE 确实更新了,请调试 PHP 代码。

标签: php mysql pdo multi-table


【解决方案1】:

您的代码中有错字。在第一个语句中,您的变量名为 $updtt,但后续语句使用 $updt

【讨论】:

  • 谢谢你,在我的实际代码测试中我没有错字。我更正了。
猜你喜欢
  • 1970-01-01
  • 2012-06-23
  • 2016-10-06
  • 2016-10-20
  • 2016-01-14
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2011-02-18
相关资源
最近更新 更多