Php 如何用一个查询更新多个表?

Php 如何用一个查询更新多个表?,php,mysql,sql,Php,Mysql,Sql,我需要更新多个表中的数据,但当我使用上述代码时,它的响应是“编辑成功”,但数据库中的数据并没有改变任何内容 但是当更新单个表时,它可以不需要事务,因为您的PDO似乎不接受事务 在您给出的示例中,类似的内容应该会起作用: if($_SERVER['REQUEST_METHOD'] == 'POST'){ $content = file_get_contents('php://input'); $user = json_decode($content, true); $id

我需要更新多个表中的数据,但当我使用上述代码时,它的响应是“编辑成功”,但数据库中的数据并没有改变任何内容


但是当更新单个表时,它可以不需要事务,因为您的PDO似乎不接受事务

在您给出的示例中,类似的内容应该会起作用:

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $content = file_get_contents('php://input');
    $user = json_decode($content, true);

    $id_a = $user['id_a'];
    $id_b = $user['id_b'];
    $aName = $user['aName'];
    $bName = $user['bName'];
    
    $sql = "
    BEGIN TRANSACTION;

    UPDATE `tb1` 
    SET `aName` = '$aName' 
    WHERE `id_a` = '$id_a';
            
    UPDATE `tb2` 
    SET `bName` = '$nName' 
    WHERE `id_b` = '$id_b';
                
    COMMIT
    ";  
    $result = $conn->query($sql);
    if($result){
        echo json_encode(['status'=>'success','message'=>'Edited successfully']);
    }
    else{
        echo json_encode(['status'=>'error','message'=>'An error occurred editing the information.']);
    }
}
else{
    echo json_encode(['status'=>'error','message'=>'REQUEST_METHOD Error']);
}
$conn->close();

将$sql拆分为单独的查询可能更容易。在一个调用中执行多个查询本身就是一章。。此外,根据您与数据库通信所使用的方式,可能会有专门的处理事务的方法。
  UPDATE tb1, tb2
    SET tb1.aName = $aName,
        tb2.bName = $bName
    WHERE
        tb1.id_a = $id_a
        AND tb2.id_b = $id_b;