php操作种
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); }}?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

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.

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

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

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

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

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
