From 8999b7ad3f5556481260e5cc4fcb2dbada743776 Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Sat, 3 Jul 2021 16:24:22 +0800 Subject: [PATCH] modify --- Database/Connection.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Database/Connection.php b/Database/Connection.php index 87acdaa5..d6665f95 100644 --- a/Database/Connection.php +++ b/Database/Connection.php @@ -266,16 +266,17 @@ class Connection extends Component public function createCommand($sql = null, $dbname = '', array $attributes = []): Command { $substr = strtoupper(substr($sql, 0, 6)); - $sql = match ($substr) { - 'SELECT', 'SHOW F', 'DELETE' => preg_replace('/FROM\s+([a-zA-Z\-_]+)\s+/', 'FROM `' . $dbname . '`.$1 ', $sql), - 'UPDATE' => preg_replace('/UPDATE\s+([a-zA-Z\-_]+)\s+SET/', 'UPDATE `' . $dbname . '`.$1 SET', $sql), - 'INSERT' => preg_replace('/INSERT INTO\s+([a-zA-Z\-_]+)/', 'INSERT INTO `' . $dbname . '`.$1', $sql), - 'TRUNCA' => preg_replace('/TRUNCATE\s+([a-zA-Z\-_]+)\s+/', 'TRUNCATE `' . $dbname . '`.$1', $sql), - default => throw new Exception('database error') - }; - - $sql = preg_replace('/INNER JOIN\s+([a-zA-Z\-_]+)\s/', 'INNER JOIN `'.$dbname.'`.$1 ', $sql); + if (!str_contains('`' . $dbname . '`', $sql)) { + $sql = match ($substr) { + 'SELECT', 'SHOW F', 'DELETE' => preg_replace('/FROM\s+([a-zA-Z\-_]+)\s+/', 'FROM `' . $dbname . '`.$1 ', $sql), + 'UPDATE' => preg_replace('/UPDATE\s+([a-zA-Z\-_]+)\s+SET/', 'UPDATE `' . $dbname . '`.$1 SET', $sql), + 'INSERT' => preg_replace('/INSERT INTO\s+([a-zA-Z\-_]+)/', 'INSERT INTO `' . $dbname . '`.$1', $sql), + 'TRUNCA' => preg_replace('/TRUNCATE\s+([a-zA-Z\-_]+)\s+/', 'TRUNCATE `' . $dbname . '`.$1', $sql), + default => throw new Exception('database error') + }; + } + $sql = preg_replace('/INNER JOIN\s+([a-zA-Z\-_]+)\s/', 'INNER JOIN `' . $dbname . '`.$1 ', $sql); $command = new Command(['db' => $this, 'sql' => $sql]); return $command->bindValues($attributes); }