-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Labels
Milestone
Description
Currently the function executes query by query and fails on one with incorrect syntax. This means that prior queries were executed. So we are left with a half-baked import. Either all or none of the queries should be executed. So maybe it would be a good idea to implement transactions into the import function?
Sorry if this is not how one should suggest this.
protected function import()
{
$query = '';
$this->pdo->beginTransaction();
try {
while (!feof($this->file)) {
$line = fgets($this->file);
$trim = trim($line);
if ($trim === '' || strpos($trim, '--') === 0 || strpos($trim, '/*') === 0) {
continue;
}
if (strpos($trim, 'DELIMITER ') === 0) {
$this->delimiter = substr($trim, 10);
continue;
}
$query .= $line;
if (substr($trim, strlen($this->delimiter) * -1) === $this->delimiter) {
$this->pdo->exec(substr(trim($query), 0, strlen($this->delimiter) * -1));
$query = '';
}
}
$this->pdo->commit();
} catch (\PDOException $e) {
$this->pdo->rollBack();
// throws \PDOException as Exception to make things easier
throw new Exception($e->getMessage(), $e->getCode(), $e);
}
}
Reactions are currently unavailable