PHP PDO多个删除查询不起作用
问题描述:
我试图设置一个功能来删除一个用户的帐户使用全有或无的交易。该函数的主要部分如下:PHP PDO多个删除查询不起作用
$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连接有关?
答
这看起来像是使用存储过程的好机会。它将大大简化您的代码,并使调试更加简单。奖励:交易也可能更快。