A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

owen0428

初级黑马

  • 黑马币:15

  • 帖子:12

  • 精华:0

© owen0428 初级黑马   /  2017-12-23 18:12  /  1854 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 owen0428 于 2017-12-23 18:15 编辑

[PHP] 纯文本查看 复制代码
<?php
//模型类基类
class Model{
	protected $db; //数据库连接对象
	protected $table; //表名
	protected $fields = array();  //字段列表

	public function __construct($table){
		$dbconfig['host'] = $GLOBALS['config']['host'];
		$dbconfig['user'] = $GLOBALS['config']['user'];
		$dbconfig['password'] = $GLOBALS['config']['password'];
		$dbconfig['dbname'] = $GLOBALS['config']['dbname'];
		$dbconfig['port'] = $GLOBALS['config']['port'];
		$dbconfig['charset'] = $GLOBALS['config']['charset'];
		
		$conn = $this->db = new Mysql($dbconfig);
		$this->table = $GLOBALS['config']['prefix'] . $table;

		//调用getFields字段
		$this->getFields();
	}

	/**
	 * 获取表字段列表
	 *
	 */
	private function getFields(){
		$sql = "DESC ". $this->table;
		$result = $this->db->getAll($sql);

		foreach ($result as $v) {
			$this->fields[] = $v['Field'];
			if ($v['Key'] == 'PRI') {
				//如果存在主键的话,则将其保存到变量$pk中
				$pk = $v['Field'];
			}
		}
		//如果存在主键,则将其加入到字段列表fields中
		if (isset($pk)) {
			$this->fields['pk'] = $pk;
		}
	}

	/**
	 * 自动插入记录
	 * @access public
	 * @param $list array 关联数组
	 * @return mixed 成功返回插入的id,失败则返回false
	 */
	public function insert($list){
		$field_list = '';  //字段列表字符串
		$value_list = '';  //值列表字符串
		foreach ($list as $k => $v) {
			if (in_array($k, $this->fields)) {
				$field_list .= "`".$k."`" . ',';
				$value_list .= "'".$v."'" . ',';
			}
		}
		//去除右边的逗号
		$field_list = rtrim($field_list,',');
		$value_list = rtrim($value_list,',');
		//构造sql语句
		$sql = "INSERT INTO `{$this->table}` ({$field_list}) VALUES ($value_list)";

		if ($this->db->query($sql)) {
			# 插入成功,返回最后插入的记录id
			return $this->db->getInsertId();
			//return true;
		} else {
			# 插入失败,返回false
			return false;
		}
		
	}

	/**
	 * 自动更新记录
	 * @access public
	 * @param $list array 需要更新的关联数组
	 * @return mixed 成功返回受影响的记录行数,失败返回false
	 */
	public function update($list){
		$uplist = ''; //更新列表字符串
		$where = 0;   //更新条件,默认为0
		foreach ($list as $k => $v) {
			if (in_array($k, $this->fields)) {
				if ($k == $this->fields['pk']) {
					# 是主键列,构造条件
					$where = "`$k`=$v";
				} else {
					# 非主键列,构造更新列表
					$uplist .= "`$k`='$v'".",";
				}
			}
		}
		//去除uplist右边的
		$uplist = rtrim($uplist,',');
		//构造sql语句
		$sql = "UPDATE `{$this->table}` SET {$uplist} WHERE {$where}";
		if ($this->db->query($sql)) {
			# 成功,并判断受影响的记录数
			if ($rows = mysqli_affected_rows()) {
				# 有受影响的记录数
				return $rows;
			} else {
				# 没有受影响的记录数,没有更新操作
				return false;
			}	
		} else {
			# 失败,返回false
			return false;
		}
		
	}

	/**
	 * 自动删除
	 * @access public
	 * @param $pk mixed 可以为一个整型,也可以为数组
	 * @return mixed 成功返回删除的记录数,失败则返回false
	 */
	public function delete($pk){
		$where = 0; //条件字符串
		//判断$pk是数组还是单值,然后构造相应的条件
		if (is_array($pk)) {
			# 数组
			$where = "`{$this->fields['pk']}` in (".implode(',', $pk).")";
		} else {
			# 单值
			$where = "`{$this->fields['pk']}`=$pk";
		}
		//构造sql语句
		$sql = "DELETE FROM `{$this->table}` WHERE $where";

		if ($this->db->query($sql)) {
			# 成功,并判断受影响的记录数
			if ($rows = mysqli_affected_rows()) {
				# 有受影响的记录
				return $rows;
			} else {
				# 没有受影响的记录
				return false;
			}		
		} else {
			# 失败返回false
			return false;
		}
	}

	/**
	 * 通过主键获取信息
	 * @param $pk int 主键值
	 * @return array 单条记录
	 */
	public function selectByPk($pk){
		$sql = "select * from `{$this->table}` where `{$this->fields['pk']}`=$pk";
		return $this->db->getRow($sql);
	}

	/**
	 * 获取总的记录数
	 * @param string $where 查询条件,如"id=1"
	 * @return number 返回查询的记录数
	 */
	public function total($where){
		if(empty($where)){
			$sql = "select count(*) from {$this->table}";
		}else{
			$sql = "select count(*) from {$this->table} where $where";
		}
		return $this->db->getOne($sql);
	}

	/**
	 * 分页获取信息
	 * @param $offset int 偏移量
	 * @param $limit int 每次取记录的条数
	 * @param $where string where条件,默认为空
	 */
	public function pageRows($offset, $limit,$where = ''){
		if (empty($where)){
			$sql = "select * from {$this->table} limit $offset, $limit";
		} else {
			$sql = "select * from {$this->table}  where $where limit $offset, $limit";
		}
		
		return $this->db->getAll($sql);
	}

}


请问大神 这里怎么改  原先用的是mysql_affect_rows(),现在这个函数用不了了 改成mysqli_affect_rows(),这里面的参数到底怎么加 才可以以

1513999952(1).jpg (50.7 KB, 下载次数: 7)

1513999952(1).jpg

1 个回复

倒序浏览
自己顶一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马