彷hibernate数据库操作
<?php /** * @author:zhangmingshuang * @version:2011-10-13 * @param: */ function __autoload($class_name){ require(HIBERNATE_PATH.$class_name.".hbm.php"); } /** * 类似JAVA的HIBERNATE操作 * 注意点: * 1.模型层文件命名型为:tablename.hbm.php (如果要使用别的命名方式,则需要更改autoload方法里的文件名格式) * 2.模型层的class的名为:表名 (例:class tablename{.......}) * 3.模型层的字段需要与表的字段一致 * */ class hibernate{ private $table_name = ""; private $table_fileds = ""; private $fileds_value = ""; //private var $host; //地址localhost:3306 var $name; //用户名 var $pass; //密码 var $db; //数据库名 var $encode; //字符编码 ,utf8, 不是utf-8。or gbk //构造函数 function __construct($host, $name, $pass, $db, $encode='utf8'){ $this->host = $host; $this->name = $name; $this->pass = $pass; $this->db = $db; $this->encode = $encode; $this->connect(); } //连结数据库 function connect(){ $conn = mysql_connect($this->host, $this->name, $this->pass) or die("Could not connect : " . $this->error()); mysql_select_db($this->db) or die ("Could not select database : " . $this->error()); mysql_query("SET NAMES '$this->encode'"); //设置编码,防止中文乱码 } //析构函数 function __destruct(){ $this->close(); } /** * 保存数据 * @param $class_handle : 类句柄 */ function save($class_handle){ $this->set_table_filed($class_handle); $fileds = substr($this->table_fileds, strpos($this->table_fileds,",")+1,strlen($this->table_fileds)); $values = substr($this->fileds_value, strpos($this->fileds_value,",")+1,strlen($this->fileds_value)); $sql = "INSERT INTO `".$this->table_name."`(".$fileds.") VALUES(".$values.")"; $this->query($sql); } /** * 得取刚新增的ID */ function get_insert_id(){ return mysql_insert_id(); } /** * 获取数据 * @param $class_handle : 类句柄 * @param $val : 值 * @param $primary_key : 主建字段(默认为:模型层的第一个var) */ function get($class_handle,$primary_key_val,$primary_key=''){ $table_name = $this->get_table_name($class_handle);//取得表名 $filed_value_array = $this->get_filed_value($class_handle);//取得字段与值 if(empty($primary_key)){//如果主键未输入,则默认为模型层的第一个VAR //取得模型层的第一个VAR foreach ($filed_value_array as $key=>$value) { $primary_key = $key; break; } } $sql = "SELECT * FROM `".$table_name."` WHERE `".$primary_key."` = '".$primary_key_val."'"; $res = $this->query($sql); //mysql_fetch_array 为 mysql_fetch_row 扩展 可取出字段 $rows = mysql_fetch_array($res); if(!empty($rows)){ foreach($rows as $key=>$val){ if(is_numeric($key)){//删除 key 为数字的数据 unset($rows[$key]); } } $set_array = $this->get_class_set($class_handle);//取得字段 if(class_exists($table_name)){ $obj = new $table_name(); //将值SET进类中 foreach($rows as $key=>$val){ //取出取得的数据库数据的第一个记录(如:ID)匹配 foreach ($set_array as $k => $v){ if(strtolower($v)=='set'.$key){ $obj->$v($val); } } } return $obj; } }else{ return new $table_name(); } } /** * * 更新数据 * @param $class_handle : 类句柄 * @param $primary_key : 主建字段(默认为:模型层的第一个var) */ function update($class_handle,$primary_key=""){ $table_name = $this->get_table_name($class_handle);//取得表名 $filed_value_array = $this->get_filed_value($class_handle); if(empty($primary_key)){ //取得模型层的第一个VAR foreach ($filed_value_array as $key=>$value) { $primary_key = $key; break; } } foreach ($filed_value_array as $k=>$v){ if($k!=$primary_key){ $set_sql .= "`".$k."`='".$v."',"; } } $set_sql = rtrim($set_sql,",")."WHERE `".$primary_key."`='".$filed_value_array[$primary_key]."'"; $sql = "UPDATE `".$table_name."` SET ".$set_sql; $this->query($sql); } /** * 删除数据 * @param $class_handle : 类句柄 * @param $primary_key_val : 要删除的值 * @param $primary_key : 主建字段(默认为:模型层的第一个var) */ function delete($class_handle,$primary_key_val,$primary_key=''){ $table_name = $this->get_table_name($class_handle);//取得表名 $filed_value_array = $this->get_filed_value($class_handle); if(empty($primary_key)){ //取得模型层的第一个VAR foreach ($filed_value_array as $key=>$value) { $primary_key = $key; break; } } $sql = "DELETE FROM `".$table_name."` WHERE `".$primary_key."` = '".$primary_key_val."'"; if(is_array($primary_key_val)){ $primary_key_val = implode(",", $primary_key_val); $sql = "DELETE FROM `".$table_name."` WHERE `".$primary_key."`in(".$primary_key_val.")"; } $this->query($sql); } /** * 查找数据 * @param $class_handle */ function find($class_handle,$order="",$order_by="DESC"){ $table_name = $this->get_table_name($class_handle);//取得表名 $sql = "SELECT * FROM `".$table_name."` WHERE 1 = 1"; if(!empty($order)){ $sql .= " ORDER BY ".$order." ".$order_by; } return $this->query($sql); } /** * 根据条件查找数据 * @param $sql : SQL语句 * @param $filed_arr : 条件 */ //阻止sql注入 function p_filterXss($str){ $str = addslashes($str); $str = mysql_real_escape_string($str); return $str; } function query_by_sql($sql,$filed_arr){ //取出SQL语句中的?代替为字段 for($i=0;$i<count($filed_arr);$i++){ $filed_obj = mysql_real_escape_string(addslashes(trim($filed_arr[$i]))); if(strstr($sql,"?")){ $x_index = strpos($sql,"?");//找到第一个? //将语句分成二段 $sql = substr($sql, 0,$x_index)."'".$filed_arr[$i]."'".substr($sql, $x_index+1,strlen($sql)); } } return $this->query($sql); } /** * 分頁查詢 * @param $sql 查詢語句 * @param $page 當前頁 * @param $pageSize 每頁條數 */ function find_by_page($sql,$page,$page_size=10,$filed_arr=array()){ //取出SQL语句中的?代替为字段 for($i=0;$i<count($filed_arr);$i++){ $filed_obj = mysql_real_escape_string(addslashes(trim($filed_arr[$i]))); if(strstr($sql,"?")){ $x_index = strpos($sql,"?");//找到第一个? //将语句分成二段 $sql = substr($sql, 0,$x_index)."'".$filed_arr[$i]."'".substr($sql, $x_index+1,strlen($sql)); } } $page = empty($page) ? 1 : $page; return $this->query($sql." LIMIT " . ($page-1) * $page_size . ",$page_size"); } //返回记录集 function get_rows($result){ $rowNum = @mysql_num_rows($result); if ($rowNum > 0){ for ($i=0; $i<$rowNum; $i++){ $rows[$i] = mysql_fetch_array($result); } } return $rows; } //返回错误 function error(){ return mysql_error(); } //关闭 function close() { return @mysql_close(); } /** * mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。 * 对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。 * * @param string $sql * return TRUE/FALSE or 资源标识符 */ function query($sql){ $result = mysql_query($sql) or die("Query failed : " . $this->error()); return $result; } //統計記錄數 function count($result){ $rows_num = mysql_num_rows($result); return $rows_num; } /** * 将类名(表名)与类里的var(字段名)历遍取出 * @param $class_handle:类句柄 */ function set_table_filed($class_handle){ $this->table_name = get_class($class_handle); //取得表名 $object_vars = get_object_vars($class_handle);//取得字段与值 //将字段数组转成字符串 $filed_array = array();$value_array = array(); foreach ($object_vars as $key=>$val){ array_push($filed_array, '`'.$key.'`'); array_push($value_array, '\''.$val.'\''); } $this->table_fileds = implode(",", $filed_array); $this->fileds_value = implode(",", $value_array); } /** * 获取表名 * @param unknown_type $class_hanle */ function get_table_name($class_handle){ return get_class($class_handle); } /** * 取得类中的属性,生成SET的方法 * @param unknown_type $class_handle */ function get_class_set($class_handle){ $new_array = array(); $filed_array = get_object_vars($class_handle);//取得字段与值 foreach ($filed_array as $key=>$val){ array_push($new_array, "set".ucfirst($key)); } return $new_array; } /** * 取得类中的属性及对应值 * @param unknown_type $class_handle */ function get_filed_value($class_handle){ return get_object_vars($class_handle);//取得字段与值 } } #--------------------Example------------------------------- #要使用此方法需要配置HIBERNATE_PATH常量,指向:模型层的路径(model/) # model模层建立规则: #1.名字:类名.hbm.php #2.类名:table_name (class table_name{ }) #3.字段:即对表相对应的字段名(要与数据库一致) (var $id="";var $username="".....) #4.要配置GET AND SET 方法 #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #使用方法 #首先,需要实例化:hibernate对像即 #$hibernate = new hibernate(DB_HOST, DB_USER, DB_PASS, DB_NAME); #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #**调用保存 # $admin = new admin(); //不用配置inclue(require or include_once or require_once) #$admin->setUsername('admin'); #$admin->setNo('no'); #.... #$hibernate->save($admin); #**获取刚刚新增的数据ID #$id = $hibernate->get_insert_id(); #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #**根据ID获取数据 #$admin = new admin();//因为无法预知是否会事先初使化数据,所以,所有方法需要调进句柄 #$admin_get = $hibernate->get($admin,$id);//具体参数请自己查看 #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #**更新 #$admin = new admin(); #$admin_get = $hibernate->get($admin,$id); #$admin_get->setUsername('admin'); #$admin_get->setNo('no'); # $hibernate->update($admin_get);//更新的时候,不传ID 但是不能执行 $admin_get->setId(1),这样就更新别的数据了 #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #**删除 #$admin = new admin(); #$hibernate->delete(id);//ID可以为1或者数组 #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #**查找数据 # # ?>

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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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











JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Dalam Php8, ungkapan perlawanan adalah struktur kawalan baru yang mengembalikan hasil yang berbeza berdasarkan nilai ungkapan. 1) Ia sama dengan pernyataan suis, tetapi mengembalikan nilai dan bukannya blok pernyataan pelaksanaan. 2) Ekspresi perlawanan secara ketat (===), yang meningkatkan keselamatan. 3) Ia mengelakkan kemungkinan ketinggalan dalam penyataan suis dan meningkatkan kesederhanaan dan kebolehbacaan kod.
