From 4aa86efc5af4d0bc3e8cf7b4fc75f9cc84d5e0cc Mon Sep 17 00:00:00 2001 From: thinkphp Date: Sun, 10 Apr 2016 15:45:00 +0800 Subject: [PATCH] =?UTF-8?q?Db=E7=B1=BB=E5=A2=9E=E5=8A=A0=E6=89=B9=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=89=A7=E8=A1=8Csql=E6=93=8D=E4=BD=9C=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/db/Driver.php | 27 +++++++++++++++++++++++++++ library/think/db/driver/Oracle.php | 2 +- library/think/db/driver/Pgsql.php | 2 +- library/think/db/driver/Sqlite.php | 2 +- library/think/db/driver/Sqlsrv.php | 2 +- 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/library/think/db/Driver.php b/library/think/db/Driver.php index 5632ec38..28419703 100644 --- a/library/think/db/Driver.php +++ b/library/think/db/Driver.php @@ -441,6 +441,33 @@ abstract class Driver return true; } + /** + * 批处理执行SQL语句 + * 批处理的指令都认为是execute操作 + * @access public + * @param array $sql SQL批处理指令 + * @return boolean + */ + public function batchQuery($sql = []) + { + if (!is_array($sql)) { + return false; + } + // 自动启动事务支持 + $this->startTrans(); + try { + foreach ($sql as $_sql) { + $result = $this->execute($_sql); + } + // 提交事务 + $this->commit(); + } catch (\PDOException $e) { + $this->rollback(); + return false; + } + return true; + } + /** * 将SQL语句中的__TABLE_NAME__字符串替换成带前缀的表名(小写) * @access protected diff --git a/library/think/db/driver/Oracle.php b/library/think/db/driver/Oracle.php index 015f23f2..1ce5f614 100644 --- a/library/think/db/driver/Oracle.php +++ b/library/think/db/driver/Oracle.php @@ -211,6 +211,6 @@ class Oracle extends Driver */ protected function getExplain($sql) { - + return []; } } diff --git a/library/think/db/driver/Pgsql.php b/library/think/db/driver/Pgsql.php index 10f9fdc2..a750e8c1 100644 --- a/library/think/db/driver/Pgsql.php +++ b/library/think/db/driver/Pgsql.php @@ -129,6 +129,6 @@ class Pgsql extends Driver */ protected function getExplain($sql) { - + return []; } } diff --git a/library/think/db/driver/Sqlite.php b/library/think/db/driver/Sqlite.php index 89be71b1..614c4956 100644 --- a/library/think/db/driver/Sqlite.php +++ b/library/think/db/driver/Sqlite.php @@ -110,6 +110,6 @@ class Sqlite extends Driver */ protected function getExplain($sql) { - + return []; } } diff --git a/library/think/db/driver/Sqlsrv.php b/library/think/db/driver/Sqlsrv.php index 481309cc..a8ea68ca 100644 --- a/library/think/db/driver/Sqlsrv.php +++ b/library/think/db/driver/Sqlsrv.php @@ -195,6 +195,6 @@ class Sqlsrv extends Driver */ protected function getExplain($sql) { - + return []; } }