首页 > 解决方案 > 如何使用一个查询 php 更新多个表?

问题描述

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();

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

但是当更新单个表时它可以

标签: phpmysqlsql

解决方案


不需要交易,因为您的 PDO 似乎不接受交易。

像这样的东西应该在你给出的例子中起作用:

  UPDATE tb1, tb2
    SET tb1.aName = $aName,
        tb2.bName = $bName
    WHERE
        tb1.id_a = $id_a
        AND tb2.id_b = $id_b;

推荐阅读