【问题标题】:PHP PDO multiple delete queries not working [duplicate]PHP PDO多个删除查询不起作用[重复]
【发布时间】:2017-02-23 00:20:01
【问题描述】:

我正在尝试使用全有或全无交易设置删除用户帐户的功能。函数的主要部分如下:

$success = true;
$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$this->db->beginTransaction();

try
{

    if( $data = $this->get_ids($account_id) ){
        $sql = "DELETE FROM table1 WHERE [ID] IN (:loc_ids);
            DELETE FROM table2 WHERE [ID] IN (:spid);
        ";
        $success = $success && $this->db->prepare($sql)->execute(array(':loc_ids' => $data['loc_ids'], ':spid' => $data['spid']));
    }

    $sql = "DELETE FROM table3 WHERE [ACCOUNT_ID] = :account_id;
        DELETE FROM table4 WHERE ([ACCOUNT_ID] = :account_id OR [USER_ID] = :user_id);
        DELETE FROM table5 WHERE [ACCOUNT_ID] = :account_id;
        DELETE FROM table6 WHERE [ACCOUNT_ID] = :account_id;
        DELETE FROM table7 WHERE [ACCOUNT_ID] = :account_id;
    ";
    $success = $success && $this->db->prepare($sql)->execute( array(':account_id' => $account_id, ':user_id' => $uid) );

    if( !$success ){
        throw new Exception("Error Processing Request", 1);
    }

    $this->db->commit();
    return true;

}
catch (PDOException $exc)
{
    echo $exc->getMessage();
    $this->db->rollBack();
    return false;
}

我尝试将查询放入单独的准备好的语句中,但无论哪种方式,我最终都会得到this screen

我正在使用 MAMP,并尝试与 MSSQL 服务器交互。我正在使用 PHP 7.06 并启用了 mysqlnd。

这是由于同时执行多个查询,还是与我的 MAMP-MSSQL 连接有关?

【问题讨论】:

    标签: php sql-server pdo sql-delete multiple-tables


    【解决方案1】:

    这看起来是使用存储过程的好机会。它将大大简化您的代码,并使调试变得更加简单。奖励:交易可能也更快。

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 2014-01-12
      • 2018-11-28
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多