From cfa01802fbe074a45d0e315903273d0d9bbbe8d1 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq,com> Date: Tue, 22 Aug 2023 14:03:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=94=B9=E7=94=A8PDO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/application/admin/model/admin/User.php | 9 ++-- source/application/common/dm/Dm.php | 43 +++++++++++++++++++ 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/source/application/admin/model/admin/User.php b/source/application/admin/model/admin/User.php index e04beb4..14220b8 100644 --- a/source/application/admin/model/admin/User.php +++ b/source/application/admin/model/admin/User.php @@ -25,18 +25,19 @@ class User extends UserModel { // 验证用户名密码是否正确 $dm = new Dm(); - if (!$user = $dm->find('bt_admin_user',[ + $user = $dm->dmPDOFind('bt_admin_user',[ 'user_name' => $data['user_name'], 'password' => yoshop_hash($data['password']) - ])) { + ]); + if (!$user['status']) { $this->error = '登录失败, 用户名或密码错误'; return false; } // 保存登录状态 Session::set('yoshop_admin', [ 'user' => [ - 'admin_user_id' => $user['admin_user_id'], - 'user_name' => $user['user_name'], + 'admin_user_id' => $user['data']['admin_user_id'], + 'user_name' => $user['data']['user_name'], ], 'is_login' => true, ]); diff --git a/source/application/common/dm/Dm.php b/source/application/common/dm/Dm.php index 7a48274..f93fca5 100644 --- a/source/application/common/dm/Dm.php +++ b/source/application/common/dm/Dm.php @@ -313,4 +313,47 @@ class Dm 'pageData' => $pageData, ]; } + + public function dmPDOFind($table,array $where) + { + + try { + $database = config('database'); + $dm_config = $database['connections']['dm']; + + $dsn = "dm:host={$dm_config['hostname']};port={$dm_config['hostport']};dbname={$dm_config['database']}"; + + $connection = new \PDO($dsn, $dm_config['username'], $dm_config['password']); + $connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + + $tableName = $this->splitTableName($table); + $fields = array_keys($where); + + $whereSqlArr = []; + foreach ($fields as $field) $whereSqlArr[] = '"'.$field.'"' . ' = ' . '?'; + + $whereSql = implode(" and ",$whereSqlArr); + + $sql = "SELECT * FROM {$tableName} WHERE " . $whereSql; + + // 准备预编译语句 + $statement = $connection->prepare($sql); + + $statement->bindParam(1, $where['user_name']); + $statement->bindParam(2, $where['password']); + + // 执行查询 + $statement->execute(); + + $data = []; + while ($row = $statement->fetch(\PDO::FETCH_ASSOC)) { + $data = $row; + } + if (empty($data)) return ['status' => false, 'msg' => '失败']; + + return ['status' => true, 'msg' => '成功','data' => $data]; + } catch (\PDOException $e) { + return ['status' => false, 'msg' => $e->getMessage()]; + } + } }