[PDO]②④--更新记录

/** * array( * 'username'=>'imoocccc, * 'password'=>'imooc222', * 'email'=>'imooc111@imooc.com' * ) * update user set username='imoocccc'......where id<=38 *order by username limit 3 */ /** 更新记录 * @param $data * @param $table * @param null $where * @param null $order * @param null $limit * @return bool|int */ public static function update($data, $table, $where = null, $order = null, $limit = null) { $sets = ''; foreach ($data as $key => $val) { $sets .= $key . "='" . $val . "',"; } //echo $sets; //username='imooc111',password='imooc212',email='imooc222@imooc22.com', $sets = rtrim($sets, ','); $sql = "UPDATE {$table} SET {$sets} " . self::parseWhere($where) . self::parseOrder($order) . self::parseLimit($limit); return self::execute($sql); }

【[PDO]②④--更新记录】PdoMYSQL.class.func
DB_HOST, 'username' => DB_USER, 'password' => DB_PWD, 'database' => DB_NAME, 'hostport' => DB_PORT, 'dsn' => DB_TYPE . ":host=" . DB_HOST . "; dbname=" . DB_NAME); } if (empty($dbConfig['hostname'])) self::throw_exception('没有定义数据库配置,请先定义'); self::$config = $dbConfig; if (empty(self::$config['params'])) self::$config['params'] = array(); if (!isset(self::$link)) { $configs = self::$config; if (self::$pconnect) { //开启长连接,添加到配置数组中 $configs['params'][constant("PDO::ATTR_PERSISTENT")] = true; } try { self::$link = new PDO($configs['dsn'], $configs['username'], $configs['password'], $configs['params']); } catch (PDOException $e) { self::throw_exception($e->getMessage()); } if (!self::$link) { self::throw_exception('PDO连接错误'); return false; } self::$link->exec('SET NAMES ' . DB_CHARSET); self::$dbVersion = self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION")); self::$connected = true; unset($configs); } }/**得到所有记录 * @param null $sql * @return mixed */ public static function getAll($sql = null) { if ($sql != null) { self::query($sql); } $result = self::$PDOStatement->fetchAll(constant("PDO::FETCH_ASSOC")); return $result; }/** * 得到结果集的一条记录 * @param null $sql * @return mixed */ public static function getRow($sql = null) { if ($sql != null) { self::query($sql); } $result = self::$PDOStatement->fetch(constant("PDO::FETCH_ASSOC")); return $result; }/** 根据主键查找记录 * @param $tabName * @param $priId * @param string $fields * @return mixed */ public static function findById($tabName, $priId, $fields = '*') { $sql = 'SELECT %s FROM %s WHERE id=%d; '; return self::getRow(sprintf($sql, self::parseFields($fields), $tabName, $priId)); }/** * 执行普通查询 * @param $tables * @param null $where * @param string $fields * @param null $group * @param null $having * @param null $order * @param null $limit * @return mixed */ public static function find($tables, $where = null, $fields = '*', $group = null, $having = null, $order = null, $limit = null) { $sql = 'SELECT ' . self::parseFields($fields) . ' FROM ' . $tables . ' ' . self::parseWhere($where) . self::parseGroup($group) . self::parseHaving($having) . self::parseOrder($order) . self::parseLimit($limit); $dataAll = self::getAll($sql); return count($dataAll) == 1 ? $dataAll[0] : $dataAll; }/** * array( * 'username'=>'imoocccc, * 'password'=>'imooc222', * 'email'=>'imooc111@imooc.com' * ) * update user set username='imoocccc'......where id<=38 *order by username limit 3 */ /** 更新记录 * @param $data * @param $table * @param null $where * @param null $order * @param null $limit * @return bool|int */ public static function update($data, $table, $where = null, $order = null, $limit = null) { $sets = ''; foreach ($data as $key => $val) { $sets .= $key . "='" . $val . "',"; } //echo $sets; //username='imooc111',password='imooc212',email='imooc222@imooc22.com', $sets = rtrim($sets, ','); $sql = "UPDATE {$table} SET {$sets} " . self::parseWhere($where) . self::parseOrder($order) . self::parseLimit($limit); return self::execute($sql); }/** * 解析where条件 * @param $where * @return string */ public static function parseWhere($where) { $whereStr = ''; if (is_string($where) && !empty($where)) { $whereStr = $where; } return empty($whereStr) ? '' : ' WHERE ' . $whereStr; }/** * 添加记录的操作 * array( *'username'=>'imooc', *'password'=>'imooc', *'email'=>'email' * ) * * INSERT user(username,password,email) VALUES('aa','aa','aa@aa.com'); */ public static function add($data, $table) { $keys = array_keys($data); array_walk($keys, array('PdoMySQL', 'addSpecilChar')); $fieldsStr = join(',', $keys); $values = "'" . join("','", array_values($data)) . "'"; $sql = "INSERT {$table}({$fieldsStr}) VALUES({$values}); "; //echo $sql; return self::execute($sql); }/** * 解析group by * @param $group * @return string */ public static function parseGroup($group) { $groupStr = ''; if (is_array($group)) { $groupStr .= ' GROUP BY' . implode(',', $group); } else if (is_string($group) && !empty($group)) { $groupStr .= ' GROUP BY ' . $group; } return empty($groupStr) ? '' : $groupStr; }/** * 对分组结果通过Having子句进行二次删选 * @param $having * @return string */ public static function parseHaving($having) { $havingStr = ''; if (is_string($having) && !empty($having)) { $havingStr .= ' HAVING ' . $having; } return $havingStr; }/** * 解析order by * @param $order * @return mixed */ public static function parseOrder($order) { $orderStr = ''; if (is_array($order)) { $orderStr = ' ORDER BY ' . join(',', $order); } elseif (is_string($order) && !empty($order)) { $orderStr .= ' ORDER BY ' . $order; } return $orderStr; }/** * 解析显示显示条件 * limit 3 * limit 0,3 * @param $limit * @return string */ public static function parseLimit($limit) { $limitStr = ''; if (is_array($limit)) { if (count($limit) > 1) { $limitStr .= ' LIMIT ' . $limit[0] . ',' . $limit[1]; } else { $limitStr .= ' LIMIT ' . $limit[0]; } } elseif (is_string($limit) && !empty($limit)) { $limitStr .= ' LIMIT ' . $limit; } return $limitStr; }/** * 解析字段 * @param $fields * @return string */ public static function parseFields($fields) { if (is_array($fields)) { array_walk($fields, array('PdoMySQL', 'addSpecilChar')); $fieldsStr = implode(',', $fields); } else if (is_string($fields) && !empty($fields)) { if (strpos($fields, '^') === false) { //0==false 0:position $fields = explode(',', $fields); array_walk($fields, array('PdoMySQL', 'addSpecilChar')); $fieldsStr = implode(',', $fields); } else { $fieldsStr = $fields; } } else { $fieldsStr = '*'; } return $fieldsStr; }/** * 通过反引号引用字段 * @param $value */ public static function addSpecilChar(&$value) { if ($value =https://www.it610.com/article/='*' || strpos($value, '.') !== false || strpos($value, '^') !== false) { //不用做处理} elseif (strpos($value, '^') === false) { //$valuehttps://www.it610.com/article/= 'https://www.it610.com/article/^' . trim($value) . '^'; $valuehttps://www.it610.com/article/= '' . trim($value) . ''; }}/**执行增删改操作,返回受影响的记录的条数 * @param null $sql * @return bool|int */ public static function execute($sql = null) { $link = self::$link; if (!$link) return false; self::$queryStr = $sql; if (!empty(self::$PDOStatement)) self::free(); $result = $link->exec(self::$queryStr); self::haveErrorThrowException(); if ($result) { self::$lastInsertId = $link->lastInsertId(); self::$numRows = $result; return self::$numRows; } else { return false; } }/** * 释放结果集 */ public static function free() { self::$PDOStatement = null; }public static function query($sql = '') { $link = self::$link; if (!$link) return false; //判断之前是否有结果集,如果有,释放结果集 if (!empty(self::$PDOStatement)) self::free(); self::$queryStr = $sql; self::$PDOStatement = $link->prepare(self::$queryStr); $res = self::$PDOStatement->execute(); self::haveErrorThrowException(); return $res; }public static function haveErrorThrowException() { $obj = empty(self::$PDOStatement) ? self::$link : self::$PDOStatement; $arrError = $obj->errorInfo(); /** * Array * ( * [0] => 42S02 * [1] => 1146 * [2] => Table 'test.user1' doesn't exist * ) */ //print_r($arrError); if ($arrError[0] != '00000') { self::$error = 'SQLSTATE ' . $arrError[0] . 'SQL Error: ' . $arrError[2] . '
Error SQL: ' . self::$queryStr; self::throw_exception(self::$error); return false; } if (self::$queryStr == '') { self::throw_exception('没有执行SQL语句'); return false; } }/** * 自定义错误处理 * @param $errMsg */ public static function throw_exception($errMsg) { echo ' ' . $errMsg . ''; }}require_once 'config.php'; $PdoMySQL = new PdoMYSQL(); $tables = 'user'; $data = https://www.it610.com/article/array('username' => 'imooc181', 'password' => 'imooc212', 'email' => 'imooc222@imooc22.com' ); var_dump($PdoMySQL::update($data, $tables, 'id=15', 'id DESC'));

[PDO]②④--更新记录
文章图片
Paste_Image.png

    推荐阅读