php操作种

Jun 13, 2016 am 11:01 AM
gt link return table this

php操作类

<?php /**+---------------------- * Mysql操作类+---------------------- * 文件名称  Db.class.php+---------------------- * 文件描述  mysql操作类+---------------------- */class Db{    //数据库连接标识    protected $link = null;    //当前操作的表    public $table = '';    //查询参数    protected $options = array();    //当前执行的SQL语句    protected $sql = '';    //用什么编码传递数据    protected $dbCharset = 'utf8';    //缓存路径    protected $cachePath = './cache/';    //缓存扩展名    protected $cacheFileExt = "php";    //缓存文件名    protected $cacheFileName;    //是否缓存    protected $cache = false;    //缓存更新时间秒数    protected $cacheLimitTime = 60;    //数据返回类型, 1代表数组, 2代表对象    protected $returnType = 1;  /*   * 根据当前动态文件生成缓存文件名   */	function setCacheFileName($fileName) {		$cacheFileName = $this->cachePath . strtoupper(md5($fileName)).".".$this->cacheFileExt;		$this->cacheFileName=$cacheFileName;    }  /*   * 根据当前动态文件生成缓存文件名   */	function getCacheFileName() {		return  $this->cacheFileName;    }    /**     * 连接数据库     *     * @access      public     * @param       array    $db  数据库配置     * @return      resource 数据库连接标识     */    public function connect($db){        //根据配置使用不同函数连接数据库        $db['host'] = isset($db['port']) ? $db['host'].':'.$db['port']: $db['host'];        $db['char'] = isset($db['char']) ? $db['char']: $this->dbCharset;        $func = $db['pconnect'] ? 'mysql_pconnect' : 'mysql_connect';        $this->link = $func($db['host'], $db['user'], $db['pwd']);        mysql_select_db($db['database'], $this->link);        mysql_query("SET NAMES '{$db['char']}'");        $this->cachePath = isset($db['cachepath']) ? $db['cachepath']: $this->cachePath;        return $this->link;    }    /**     * 查询符合条件的一条记录     *     * @access      public     * @param       string    $where  查询条件     * @param       string    $field  查询字段     * @param       string    $table  表     * @return      mixed             符合条件的记录     */    public function find($where = NULL, $field = '*', $table = ''){        return $this->findAll($where = NULL, $field = '*', $table = '', FALSE);    }    /**     * 查询符合条件的所有记录     *     * @access      public     * @param       string    $where  查询条件     * @param       string    $field  查询字段     * @param       string    $table  表     * @return      mixed             符合条件的记录     */    public function findAll($where = NULL, $field = '*', $table = '', $all = TRUE){        $this->options['where'] = is_null($where) ? @$this->options['where']: $where;        $this->options['field'] = isset($this->options['field']) ? $this->options['field']: $field;        $this->options['table'] = $table == '' ? $this->table: $table;        $sql = "SELECT {$this->options['field']} FROM `{$this->options['table']}` ";        $sql .= isset($this->options['join']) ? ' LEFT JOIN '.$this->options['join']: '';        $sql .= isset($this->options['where']) ? ' WHERE '.$this->options['where']: '';        $sql .= isset($this->options['group']) ? ' GROUP BY '.$this->options['group']: '';        $sql .= isset($this->options['having']) ? ' HAVING '.$this->options['having']: '';        $sql .= isset($this->options['order']) ? ' ORDER BY '.$this->options['order']: '';        $sql .= isset($this->options['limit']) ? ' LIMIT '.$this->options['limit']: '';        $this->sql = $sql;        $row = NULL;        //如果开启了缓存, 那么重缓存中获取数据        if ($this->cache === TRUE){			$this->setCacheFileName($this->sql);            $row = $this->readCache();        }        //如果读取失败, 或则没有开启缓存        if (is_null($row)){            $result = $this->query();            $row = $all === TRUE ? $this->fetchAll($result): $this->fetch($result);            //如果开启了缓存, 那么就写入            if ($this->cache === TRUE){                $this->writeCache($row);            }            $this->options = array();        }        return $row;    }    /**     * 读取结果集中的所有记录到数组中     *     * @access public     * @param  resource  $result  结果集     * @return array     */    public function fetchAll($result = NULL){        $rows = array();        while ($row = $this->fetch($result)){            $rows[] = $row;        }        return $rows;    }    /**     * 读取结果集中的一行记录到数组中     *     * @access public     * @param  resource  $result  结果集     * @param  int       $type    返回类型, 1为数组, 2为对象     * @return mixed              根据返回类型返回     */    public function fetch($result = NULL, $type = NULL){        $result = is_null($result) ? $this->result: $result;        $type = is_null($type) ? $this->returnType: $type;        $func = $type === 1 ? 'mysql_fetch_assoc' : 'mysql_fetch_object';        return $func($result);    }    /**     * 执行SQL命令     *     * @access      public     * @param       string    $sql    SQL命令     * @param       resource  $link   数据库连接标识     * @return      mixed             数据库结果集     */    public function query($sql = '', $link = NULL){        $sql = empty($sql) ? $this->sql: $sql;        $link = is_null($link) ? $this->link: $link;        $this->result = mysql_query($sql, $link);        if (is_resource($this->result)){            return $this->result;        }        //如果执行SQL出现错误, 那么抛出异常        exit('<strong>Mysql error:</strong>'.$this->getError());    }    /**     * 执行SQL命令     *     * @access      public     * @param       string    $sql    SQL命令     * @param       resource  $link   数据库连接标识     * @return      bool              是否执行成功     */    public function execute($sql = '', $link = NULL){        $sql = empty($sql) ? $this->sql: $sql;        $link = is_null($link) ? $this->link: $link;        if (mysql_query($sql, $link)){            return TRUE;        }        return FALSE;    }    /**     * 插入记录     *     * @access public     * @param  array  $data  插入的记录, 格式:array('字段名'=>'值', '字段名'=>'值');     * @param  string $table 表名     * @return bool          当前记录id     */    public function add($data, $table = NULL){        $table = is_null($table) ? $this->table: $table;        $sql = "INSERT INTO `{$table}`";        $fields = $values = array();        $field = $value = '';        //遍历记录, 格式化字段名称与值        foreach($data as $key => $val){            $fields[] = "`{$table}`.`{$key}`";            $values[] = is_numeric($val) ? $val : "'{$val}'";        }        $field = join(',', $fields);        $value = join(',', $values);        unset($fields, $values);        $sql .= "({$field}) VALUES({$value})";        $this->sql = $sql;        $this->execute();        return $this->insertId();    }    /**     * 删除记录     *     * @access public     * @param  string  $where  条件     * @param  string  $table  表名     * @return bool            影响行数     */    public function delete($where = NULL, $table = NULL){        $table = is_null($table) ? $this->table: $table;        $where = is_null($where) ? @$this->options['where']: $where;        $sql = "DELETE FROM `{$table}` WHERE {$where}";        $this->sql = $sql;        $this->execute();        return $this->affectedRows();    }    /**     * 更新记录     *     * @access public     * @param  array   $data   更新的数据 格式:array('字段名' => 值);     * @param  string  $where  更新条件     * @param  string  $table  表名     * @return bool            影响多少条信息     */    public function update($data, $where = NULL, $table = NULL){        $table = is_null($table) ? $this->table: $table;        $where = is_null($where) ? @$this->options['where']: $where;        $sql = "UPDATE `{$table}` SET ";        $values = array();        foreach($data as $key => $val){            $val = is_numeric($val) ? $val : "'{$val}'";            $values[] = "`{$table}`.`{$key}` = {$val}";        }        $value = join(',', $values);        $this->sql = $sql.$value." WHERE {$where}";        $this->execute();        return $this->affectedRows();    }    /**     * 读取缓存     *     * @access      public     * @return      mixed   如果读取成功返回缓存内容, 否则返回NULL     */    protected function readCache(){        $file = $this->getCacheFileName();        if (file_exists($file)){            //缓存过期            if ((filemtime($file) + $this->cacheLimitTime) returnType){                $row = include $file;            }            else{                $data = file_get_contents($file);                $row = unserialize($data);            }            return $row;        }        return NULL;    }    /**     * 写入缓存     *     * @access      public     * @param       mixed   $data   缓存内容     * @return      bool            是否写入成功     */    public function writeCache($data){        $file = $this->getCacheFileName();        if ($this->makeDir(dirname($file))){            if (1 === $this->returnType){				$data = '<?php return '.var_export($data, TRUE).';?>';			}else{				$data = serialize($data);			}		}        return file_put_contents($file, $data);    }	/*	 * 清除缓存文件	 * string $fileName 指定文件名(含函数)或者all(全部)	 * 返回:清除成功返回true,反之返回false	 */	function clearCache( $fileName = "all" ) {		if( $fileName != "all" ) {			if( file_exists( $fileName ) ) {				return @unlink( $fileName );			}else return false;		}		if ( is_dir( $this->cachePath ) ) {			if ( $dir = @opendir( $this->cachePath ) ) {				while ( $file = @readdir( $dir ) ) {					$check = is_dir( $file );					if ( !$check )					@unlink( $this->cachePath . $file );				}				@closedir( $dir );				return true;			}else{				return false;			}		}else{		  return false;		}	}	  /*	   * 连续建目录	   * string $dir 目录字符串	   * int $mode   权限数字	   * 返回:顺利创建或者全部已建返回true,其它方式返回false	   */	function makeDir( $dir, $mode = "0777" ) {		if( ! $dir ) return 0;		$dir = str_replace( "\\", "/", $dir );				$mdir = "";		foreach( explode( "/", $dir ) as $val ) {			$mdir .= $val."/";			if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;		  			if( ! file_exists( $mdir ) ) {				if([email protected]( $mdir, $mode )){					return false;				}			}		}		return true;	}	//自动加载函数, 实现特殊操作    public function __call($func, $args)    {         if(in_array($func, array('field', 'join', 'where', 'order', 'group', 'limit', 'having')))         {               $this->options[$func] = array_shift($args);               return $this;         } elseif($func === 'table'){               $this->options['table'] = array_shift($args);               $this->table            = $this->options['table'];               return $this;         }        //如果函数不存在, 则抛出异常         exit('Call to undefined method Db::' . $func . '()');     }//-------------------------------------------        //返回上一次操作所影响的行数    public function affectedRows($link = null){		$link = is_null($link) ? $this->link : $link;		return mysql_affected_rows($link);    }        //返回上一次操作记录的id    public function insertId($link = null){        $link = is_null($link) ? $this->link : $link;        return mysql_insert_id($link);    }        //清空结果集    public function free($result = null){         $result = is_null($result) ? $this->result : $result;         return mysql_free_result($result);    }        //返回错误信息	public function getError($link = NULL){        $link = is_null($link) ? $this->link : $link;        return mysql_error($link);    }        //返回错误编号	public function getErrno($link = NULL){        $link = is_null($link) ? $this->link : $link;        return mysql_errno($link);    }}?>
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara Huawei GT3 Pro dan GT4? Apakah perbezaan antara Huawei GT3 Pro dan GT4? Dec 29, 2023 pm 02:27 PM

Ramai pengguna akan memilih jenama Huawei apabila memilih jam tangan pintar Antaranya, Huawei GT3pro dan GT4 adalah pilihan yang sangat popular. Apakah perbezaan antara Huawei GT3pro dan GT4? 1. Rupa GT4: 46mm dan 41mm, bahan cermin kaca + badan keluli tahan karat + cangkang belakang gentian resolusi tinggi. GT3pro: 46.6mm dan 42.9mm, bahannya ialah kaca nilam + badan titanium/badan seramik + cangkerang belakang seramik 2. GT4 yang sihat: Menggunakan algoritma Huawei Truseen5.5+ terkini, hasilnya akan lebih tepat. GT3pro: Penambahan elektrokardiogram ECG dan saluran darah serta keselamatan

Penjelasan terperinci tentang penggunaan pulangan dalam bahasa C Penjelasan terperinci tentang penggunaan pulangan dalam bahasa C Oct 07, 2023 am 10:58 AM

Penggunaan pulangan dalam bahasa C ialah: 1. Untuk fungsi yang jenis nilai pulangannya adalah batal, anda boleh menggunakan pernyataan pulangan untuk menamatkan pelaksanaan fungsi lebih awal 2. Untuk fungsi yang jenis nilai pulangannya tidak batal, fungsi bagi penyataan pulangan adalah untuk menamatkan pelaksanaan fungsi Hasilnya dikembalikan kepada pemanggil 3. Menamatkan pelaksanaan fungsi lebih awal, kita boleh menggunakan penyataan pulangan untuk menamatkan pelaksanaan fungsi lebih awal jika fungsi tidak mengembalikan nilai.

Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Aug 24, 2023 am 09:48 AM

Mengapa Alat Snipping Tidak Berfungsi pada Windows 11 Memahami punca masalah boleh membantu mencari penyelesaian yang betul. Berikut ialah sebab utama Alat Snipping mungkin tidak berfungsi dengan betul: Focus Assistant dihidupkan: Ini menghalang Snipping Tool daripada dibuka. Aplikasi rosak: Jika alat snipping ranap semasa pelancaran, ia mungkin rosak. Pemacu grafik lapuk: Pemacu yang tidak serasi mungkin mengganggu alat snipping. Gangguan daripada aplikasi lain: Aplikasi lain yang sedang berjalan mungkin bercanggah dengan Alat Snipping. Sijil telah tamat tempoh: Ralat semasa proses naik taraf boleh menyebabkan penyelesaian mudah ini sesuai untuk kebanyakan pengguna dan tidak memerlukan sebarang pengetahuan teknikal khusus. 1. Kemas kini apl Windows dan Microsoft Store

Apakah perintah pelaksanaan pemulangan dan akhirnya pernyataan di Jawa? Apakah perintah pelaksanaan pemulangan dan akhirnya pernyataan di Jawa? Apr 25, 2023 pm 07:55 PM

Kod sumber: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}akhirnya{x=3;}}}# Output Output kod di atas hanya boleh membuat kesimpulan: return dilaksanakan sebelum akhirnya. Mari kita lihat apa yang berlaku pada tahap bytecode. Yang berikut memintas sebahagian kod bait kaedah case1 dan membandingkan kod sumber untuk menganotasi maksud setiap arahan dalam

Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Jul 29, 2023 am 08:22 AM

Bahagian 1: Langkah Penyelesaian Masalah Awal Menyemak Status Sistem Apple: Sebelum menyelidiki penyelesaian yang rumit, mari kita mulakan dengan asas. Masalahnya mungkin tidak terletak pada peranti anda; Lawati halaman Status Sistem Apple untuk melihat sama ada AppStore berfungsi dengan betul. Jika terdapat masalah, anda hanya boleh menunggu Apple membetulkannya. Semak sambungan Internet anda: Pastikan anda mempunyai sambungan internet yang stabil kerana isu "Tidak dapat menyambung ke AppStore" kadangkala boleh dikaitkan dengan sambungan yang lemah. Cuba tukar antara Wi-Fi dan data mudah alih atau tetapkan semula tetapan rangkaian (Umum > Tetapkan Semula > Tetapkan Semula Tetapan Rangkaian > Tetapan). Kemas kini versi iOS anda:

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Perbezaan antara pautan dan import dijelaskan secara terperinci: Apakah perbezaan antara mereka? Perbezaan antara pautan dan import dijelaskan secara terperinci: Apakah perbezaan antara mereka? Jan 06, 2024 am 08:19 AM

Analisis mendalam: Apakah perbezaan antara pautan dan import? Apabila membangunkan halaman web atau aplikasi, kami selalunya perlu memperkenalkan fail CSS luaran atau perpustakaan JavaScript untuk meningkatkan atau menyesuaikan kod kami. Dalam proses ini, pautan dan import adalah dua kaedah yang biasa digunakan. Walaupun tujuan mereka adalah untuk memperkenalkan sumber luaran, terdapat beberapa perbezaan dalam penggunaan khusus. Sintaks dan lokasi: pautan: Gunakan teg pautan untuk memautkan sumber luaran ke dalam fail HTML, biasanya terletak di kepala dokumen HTML

Bagaimanakah Vue3 menggunakan gula sintaksis persediaan untuk menolak menulis pulangan Bagaimanakah Vue3 menggunakan gula sintaksis persediaan untuk menolak menulis pulangan May 12, 2023 pm 06:34 PM

Gula sintaks persediaan Vue3.2 ialah gula sintaks masa kompilasi yang menggunakan gabungan API dalam satu komponen fail (SFC) untuk menyelesaikan persediaan yang rumit dalam Vue3.0 Pembolehubah, fungsi dan kandungan yang diisytiharkan yang diperkenalkan oleh import didedahkan melalui pulangan, supaya ia boleh digunakan dalam Vue3.0 Masalah dalam penggunaan 1. Tidak perlu mengembalikan pembolehubah yang diisytiharkan, fungsi dan kandungan yang diperkenalkan semasa penggunaan Anda boleh menggunakan gula sintaksis //import kandungan yang diperkenalkan import{getToday }from'./utils'//variable constmsg='Hello !'//function function

See all articles