Я выучил коммит и откат с pdo.Когда я делаю это с простым query()
, он работает нормально, но когда я добавляю транзакции для exec()
, rollback()
не работает.
$tables = array("applicant_course", "applicant_course_time", "course",'session_course_sort_data','sessions_attendee','sessions');
$conn = new PDO("mysql:host=" . $db_host_target . ";port=".$db_port_target.";dbname=" . $db_name_target , $db_user_target, $db_password_target);
$conn->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
$conn->beginTransaction();
try {
foreach ($tables as $value) {
$sql_file = fopen($value . '.sql', 'r');
$sql = fread($sql_file, filesize($value . '.sql'));
$conn->exec($sql); //here is exec()
}
$conn->rollback();//I have put rollback here for testing purposes
} catch (Exception $e) {
// An exception has been thrown
// We must rollback the transaction
echo 'error<br>';
$conn->rollback();
}
Можете ли вы указать мне, что мне делать, чтобывыполнить транзакции для exec()
.Я также могу загрузить .sql
файл, если вам это нужно.Спасибо