2017-02-23 6 views
0

Я пытаюсь настроить функцию для удаления учетной записи пользователя, используя транзакцию «все или ничего». Основная часть функции выглядит следующим образом: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?

ответ

-3

Это похоже на хорошую возможность использовать хранимую процедуру. Это значительно упростит ваш код и сделает отладку более простой. Бонус: транзакция, вероятно, тоже быстрее.

Смежные вопросы