From a34a90f03cecc7658231547270f8036bb5affe4a Mon Sep 17 00:00:00 2001 From: chengkun <chengkun@ishangstudy.com> Date: Tue, 29 Apr 2025 18:32:24 +0800 Subject: [PATCH] 提交 --- app/public/action.class.php | 141 +++++++++++++++++++++++++++-------------------- 1 files changed, 81 insertions(+), 60 deletions(-) diff --git a/app/public/action.class.php b/app/public/action.class.php index f6cef6a..4876c36 100644 --- a/app/public/action.class.php +++ b/app/public/action.class.php @@ -1,7 +1,6 @@ <?php - class model { // 操作状态 const MODEL_INSERT = 1; // 插入模型数据 @@ -152,33 +151,41 @@ protected function _initialize() { } + function get_table_fields($tableName) { + include(CONFIG_PATH . 'db.config.php'); + $mysqli = new mysqli($db_config['dbhost'], $db_config['dbuser'], $db_config['dbpass'], $db_config['dbname']); + $query = $mysqli->query("SHOW COLUMNS FROM $tableName"); + $tableFields = array(); + while ($row = $query->fetch_assoc()) { + $tableFields[] = $row['Field']; + } + return $tableFields; + } + function insert_into($table, $data = array()) { - - $value = array(); - $this->db->connect(); include(PLUS_PATH . 'dbstruct.cache.php'); $TableFullName = $this->def . $table; - if (is_array($$TableFullName)) { - $fields = array_keys($$TableFullName); - } else { + $fields = $this->get_table_fields($TableFullName); + if (!$fields) { return FALSE; } - - if (is_array($fields)) { - - if (is_array($data)) { - foreach ($data as $key => $v) { - if (in_array($key, $fields)) { - $v = $this->FilterStr($v); - $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'"; - } - } + if (!is_array($data)) { + return FALSE; + } + foreach ($data as $key => $v) { + if (in_array($key, $fields)) { + $v = $this->FilterStr($v); + $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'"; } } + $value = @implode(",", $value); + if (!$value) { + return FALSE; + } return $this->DB_insert_once($table, $value); } @@ -187,8 +194,16 @@ $this->db->connect(); $value = array(); include(PLUS_PATH . 'dbstruct.cache.php'); -// $TableFullName=$this->def.$table; -// var_dump($$TableFullName);exit(); + $TableFullName = $this->def . $table; + $fields = $this->get_table_fields($TableFullName); + if (!is_array($data) || !is_array($where)) { + return FALSE; + } + if (!$fields) { + return FALSE; + } + + // var_dump($$TableFullName);exit(); // if (is_array($where)) { // $fields = array_keys($where); // } else { @@ -197,57 +212,56 @@ // var_dump($fields);exit(); - if (is_array($data)) { - - foreach ($data as $key => $v) { + foreach ($data as $key => $v) { + if (!in_array($key, $fields)) { + continue; + } + if (is_array($v)) { - if (is_array($v)) { + if ($v[0] == '+') { - if ($v[0] == '+') { + $value[] = '`' . $key . '` = `' . $key . '` + ' . $this->db->escape_string($v[1]); + } elseif ($v[0] == '-') { + + $value[] = '`' . $key . '` = `' . $key . '` - ' . $this->db->escape_string($v[1]); + + } else if ($v[0] == '=') { + + $value[] = '`' . $key . '` = ' . $this->db->escape_string($v[1]); + + + } elseif ($v[0] == 'CASE') { + + + $casesql = '`' . $key . '` = CASE `' . $this->db->escape_string($v[1]) . '`'; + + foreach ($v[2] as $ck => $cv) { - $value[] = '`' . $key . '` = `' . $key . '` + ' . $this->db->escape_string($v[1]); - } elseif ($v[0] == '-') { - - $value[] = '`' . $key . '` = `' . $key . '` - ' . $this->db->escape_string($v[1]); - - } else if ($v[0] == '=') { - - $value[] = '`' . $key . '` = ' . $this->db->escape_string($v[1]); - - - } elseif ($v[0] == 'CASE') { - - - $casesql = '`' . $key . '` = CASE `' . $this->db->escape_string($v[1]) . '`'; - - foreach ($v[2] as $ck => $cv) { - - $casesql .= " WHEN '" . $ck . "' THEN '" . $this->db->escape_string($cv) . "' "; - } - - $casesql .= 'END'; - - $value[] = $casesql; - } elseif ($v[0] == 'DATE_ADD') { - - $value[] = '`' . $key . '` = DATE_ADD(`' . $key . '` , INTERVAL ' . $this->db->escape_string($v[1]) . ' DAY )'; - - } elseif ($v[0] == 'concat') { - - $value[] = '`' . $key . '` = concat(`' . $key . '` , ",' . $this->db->escape_string($v[1]) . ' ")'; - } else { - - $this->db->show_error(); + $casesql .= " WHEN '" . $ck . "' THEN '" . $this->db->escape_string($cv) . "' "; } + $casesql .= 'END'; + + $value[] = $casesql; + } elseif ($v[0] == 'DATE_ADD') { + + $value[] = '`' . $key . '` = DATE_ADD(`' . $key . '` , INTERVAL ' . $this->db->escape_string($v[1]) . ' DAY )'; + + } elseif ($v[0] == 'concat') { + + $value[] = '`' . $key . '` = concat(`' . $key . '` , ",' . $this->db->escape_string($v[1]) . ' ")'; } else { - $v = $this->FilterStr($v); - - $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'"; + $this->db->show_error(); } + } else { + + $v = $this->FilterStr($v); + + $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'"; } + } @@ -543,6 +557,13 @@ } include(PLUS_PATH . 'dbstruct.cache.php'); $TableFullName = $this->def . $tablename; + /////获取表的字段 + + if (!isset($$TableFullName)) { + $this->error = '表结构缓存文件不存在'; + return FALSE; + } + if (is_array($$TableFullName)) { $fieldsArr = array_keys($$TableFullName); } -- Gitblit v1.9.0