ホームページ  >  記事  >  バックエンド開発  >  mysqlデータベースを操作するためのシンプルで実践的なPHPクラス、シンプルで実践的なmysql_PHPチュートリアル

mysqlデータベースを操作するためのシンプルで実践的なPHPクラス、シンプルで実践的なmysql_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:12:07958ブラウズ

シンプルで実用的なphp操作mysqlデータベースクラス、シンプルで実用的なmysql

この記事の例では、mysql データベースを操作するためのシンプルで実用的な PHP クラスについて説明します。参考のためにみんなで共有してください。詳細は以下の通りです

コードをコピーします コードは次のとおりです:

/*
このデータベース接続クラスは、SQL アンチインジェクション関数を自動的にロードし、いくつかの機密性の高い SQL クエリ キーワードをフィルタリングします。また、データベース内のすべてのテーブル名を取得するためのテーブル ステータスの表示やテーブル クラスの表示などの判断フィールドを追加することもできます。 。 */
@ini_set('mysql.trace_mode','off'); クラスmysql
{
パブリック $dblink
パブリック $pconnect
private $search = array('/union(s*(/*.**/)?s*)+select/i', '/load_file(s*(/*.**/)?s*)+( /i', '/into(s*(/*.**/)?s*)+outfile/i'); private $replace = array('union select', 'load_file (', 'into outfile');
プライベート $rs;
関数 __construct($hostname,$username,$userpwd,$database,$pconnect=false,$charset='utf8')
{
define('allowed_htmltags', '<meta><body><a><p><br><hr><h1><h2> ;<h3><h4><h5><h6><font>gt;<u><i><b><strong><div><span><ol>< ;ul><li><img alt="mysqlデータベースを操作するためのシンプルで実践的なPHPクラス、シンプルで実践的なmysql_PHPチュートリアル" ><table><tr><td><map>'); $this->pconnect=$pconnect <br /> $this->dblink=$pconnect?mysql_pconnect($hostname,$username,$userpwd):mysql_connect($hostname,$username,$userpwd); (!$this->dblink||!is_resource($this->dblink)) && Fatal_error("データベースへの接続に失敗しました!"); @mysql_unbuffered_query("セット名 {$charset}"); if($this->version()>'5.0.1') <br> { <br> @mysql_unbuffered_query("set sql_mode = ''"); }<br> @mysql_select_db($database) または Fatal_error("テーブルを選択できません!"); $this->dblink を返す <br> }<br> <br> 関数クエリ($sql,$unbuffered=false) <br> { <br> //エコー $sql.'<br>'; $this->rs=$unbuffered?mysql_unbuffered_query($sql,$this->dblink):mysql_query($sql,$this->dblink); //(!$this->rs||!is_resource($this->rs)) && fat_error("クエリの実行に失敗しました! error:".mysql_error()); if(!$this->rs)fatal_error('SQL ステートメント '.$sql.':' の実行中に次のエラーが発生しました。'.mysql_error()); $this->rs を返す <br> }<br> <br> 関数 fetch_one($sql) <br> { <br> $this->rs=$this->クエリ($sql); dircms_strips チュートリアルを返します lashes($this->filter_pass(mysql_fetch_array($this->rs,mysql_assoc))); }<br> <br> function get_maxfield($filed='id',$table) // $table テーブルの $filed フィールドの最大値を取得します <br> { <br> $r=$this->fetch_one("select {$table}.{$filed} from `{$table}` order by `{$table}`.`{$filed}` desc limit 0,1") ; <br> $r[$filed] を返します <br> }<br> <br> 関数 fetch_all($sql) <br> { <br> $this->rs=$this->クエリ($sql); $結果=配列(); while($rows=mysql_fetch_array($this->rs,mysql_assoc)) <br> { <br> $結果[]=$行 <br> }<br> <br> mysql_free_result($this->rs); dircms_stripslashes($this->filter_pass($result)) を返します <br> }<br> <br> 関数 fetch_all_withkey($sql,$key='id') <br> { <br> $this->rs=$this->クエリ($sql); $結果=配列(); while($rows=mysql_fetch_array($this->rs,mysql_assoc)) <br> { <br> $result[$rows[$key]]=$rows; }<br> <br> mysql_free_result($this->rs); dircms_stripslashes($this->filter_pass($result)) を返します <br> }<br> <br> 関数 last_insert_id() <br> { <br> if(($insertid=mysql_insert_id($this->dblink))>0)return $insertid; else //auto_increment のカラム型が bigint の場合、mysql_insert_id() によって返される値は正しくありません <br> { <br> $result=$this->fetch_one('insertid として last_insert_id() を選択'); $result['insertid'] を返します <br> }<br> }<br> <br> 関数挿入($tbname,$varray,$replace=false) <br> { <br> $varray=$this->escape($varray); $tb_fields=$this->get_fields($tbname); // アップグレードして、フィールドが存在するかどうかを判断する関数を追加します <br> <br>  foreach($varray as $key => $value) <br>   { <br>    if(in_array($key,$tb_fields)) <br>    { <br>     $filds[]='`'.$key.'`'; <br>     $values[]=is_string($value)?'''.$value.''':$value; <br>    }<br>   }<br>  <br>   if($fileds) <br>   { <br>    $fileds=implode(',',$fileds); <br>    $fileds=str_replace(''','''',$fileds); <br>    $values=implode(',',$values); <br>    $sql=$replace?"{$tbname}({$fileds}) の値 ({$values}) に置き換えます":"{$tbname}({$fileds}) の値 ({$values}) に挿入します"; <br>    $this->query($sql,true); <br>    $this->last_insert_id(); を返す<br>   }<br>   それ以外の場合は false を返します。 <br>  }<br>  <br>  関数 update($tbname, $array, $where = '') <br>  { <br>   $array=$this->escape($array); <br>   if($where) <br>   { <br>    $tb_fields=$this->get_fields($tbname); // 增加判断字段の有無 <br>     <br>    $sql = ''; <br>    foreach($array as $k=>$v) <br>    { <br>     if(in_array($k,$tb_fields)) <br>     { <br>      $k=str_replace('','',$k); <br>      $sql .= ", `$k`='$v'"; <br>     }<br>    }<br>    $sql = substr($sql, 1); <br>     <br>    if($sql)$sql = "`$tbname` を更新、$sql を設定、$where"; <br>    それ以外の場合は true を返します。 <br>   }<br>   それ以外は<br>   { <br>    $sql = "`$tbname`(`".implode('`,`', array_keys($array))."`) 値('".implode("','", $array) に置き換えます。" ')"; <br>   }<br>   return $this->query($sql,true); <br>  }<br>   <br>  関数 mysql_delete($tbname,$idarray,$filedname='id') <br>  { <br>   $idwhere=is_array($idarray)?implode(',',$idarray):intval($idarray); <br>   $where=is_array($idarray)?"{$tbname}.{$filedname} in ({$idwhere})":" {$tbname}.{$filedname}={$idwhere}"; <br>  <br>   return $this->query("{$tbname} where {$where}から削除",true); <br>  }<br>  <br>  関数 get_fields($table) <br>  { <br>   $fields=array(); <br>   $result=$this->fetch_all("`{$table}` の列を表示"); <br>   foreach($result as $val) <br>   { <br>    $fields[]=$val['フィールド']; <br>   }<br>   $fields を返します。 <br>  }<br>  <br>  関数 get_table_status($database) <br>  { <br>   $status=array(); <br>   $r=$this->fetch_all("`".$database."`" からテーブルのステータスを表示); /////// show table ステータスの特性は show table と同様ですが、各テーブルに大量の情報を提供できます。   foreach($r を $v として) <br>   { <br>    $status[]=$v; <br>   }<br>   $statusを返します。 <br>  }<br>  <br>  関数 get_one_table_status($table) <br>  { <br>   return $this->fetch_one("'$table' のようなテーブルのステータスを表示"); <br>  }<br>  <br>  function create_fields($tbname,$fieldname,$size=0,$type='varchar') // 2010-5-14 修正一下 <br>  { <br>   if($size) <br>   { <br>    $size=strtoupper($type)=='varchar'?$size:8; <br>    $this->query("alter table `{$tbname}` add `$fieldname` {$type}( {$size} ) not null",true); <br>   }<br>   else $this->query("alter table `{$tbname}` add `$fieldname` mediatext not null",true); <br>   true を返します。 <br>  }<br>  <br>  function get_tables() //すべての表表名 <br>  { <br>   $tables=array(); <br>   $r=$this->fetch_all("テーブルを表示"); <br>   foreach($r を $v として) <br>   { <br>    foreach($v として $v_) <br>    { <br>     $tables[]=$v_; <br>    }<br>   }<br>   $tables を返します。 <br>  }<br>  <br>  function create_model_table($tbname) //作成一コンテンツ モデル表(開始:最初のみ有字段contentid int(20),コンテンツ テーブル用,//////////////////// /// update:2010-5-20 默认追加`content`mediumtext not null,字段) <br>  { <br>   if(in_array($tbname,$this->get_tables())) は false を返します。  /////////////////////現表名が存在する場合、false を返します <br>   if($this->query("テーブル `{$tbname}` を作成します ( <br> `contentid` mediaint(8) が null ではありません、<br> `content` メディアテキストが null ではありません、<br> キー ( `contentid` ) <br>) エンジン = myisam デフォルト charset=utf8",true))return true; ///////////////////// 成功した場合は true を返します <br> false を返す /////////////失敗した場合は false を返す <br> }<br> <br> function create_table($tbname) //メンバー モデルの空のテーブルを作成します (最初はフィールド userid int(20) のみ、メンバー テーブルに使用、2010-4-26) <br> { <br> if(in_array($tbname,$this->get_tables())) false を返します <br> if($this->query("テーブル `{$tbname}` を作成します ( <br> `userid` mediaint(8) が null ではありません、<br> キー ( `userid` ) <br> ) エンジン = myisam デフォルト charset=utf8",true))true を返します; <br> false を返します。 }<br> <br> functionescape($str) // 危険な文字をフィルタリングします <br> { <br> if(!is_array($str)) return str_replace(array('n', 'r'), array(chr(10), chr(13)),mysql_real_escape_string(preg_replace($this->search,$this- >replace、$str)、$this->dblink)); foreach($str as $key=>$val) $str[$key] = $this->escape($val); $str を返します。 }<br> <br> function filter_pass($string, $allowedtags = '', $disabledattributes = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', ' onbeforeeditfocus'、'onbeforepaste'、'onbeforeprint'、'onbeforeunload'、'onbeforeupdate'、'onblur'、'onbounce'、'oncellchange'、'onchange'、'onclick'、'oncontextmenu'、'oncontrolselect'、'oncopy' 、 'oncut'、 'ondataavaible'、 'ondatasetchanged'、 'ondatasetcomplete'、 'ondblclick'、 'ondeactivate'、 'ondrag'、 'ondragdrop'、 'ondragend'、 'ondragenter'、 'ondragleave'、 'ondragover'、 ' ondragstart'、'ondrop'、'onerror'、'onerrorupdate'、'onfilterupdate'、'onfinish'、'onfocus'、'onfocusin'、'onfocusout'、'onhelp'、'onkeydown'、'onkeypress'、'onkeyup' 、'onlayoutcomplete'、'onload'、'onlosecapture'、'onmousedown'、'onmouseenter'、'onmouseleave'、'onmousemove'、'onmoveout'、'onmouseotutorialver'、'onmouseup'、'onmousewheel'、'onmove' 、' onmoveend'、'onmovestart'、'onpaste'、'onpropertychange'、'onreadystatechange'、'onreset'、'onresize'、'onresizeend'、'onresizestart'、'onrowexit'、'onrowsdelete'、'onrowsinserted'、'onscroll' 、'onselect'、'onselectionchange'、'onselectstart'、'onstart'、'onstop'、'onsubmit'、'onunload')) <br> { <br> if(is_array($string)) <br> { <br> foreach($string as $key => $val) $string[$key] = $this->filter_pass($val, allowed_htmltags); }<br> それ以外は<br> { <br> $string = preg_replace('/s('.implode('|', $disabledattributes).').*?([s>])/', ' ', preg_replace('/<(.*?) > ;/ie', "'<'.preg_replace(array('/Web ページの効果:[^"']*/i', '/(".implode('|', $disabledattributes).")[ ] *=[ ]*["'][^"']*["']/i', '/s+/')、array('', '', ' ')、stripslashes(' ')) . ' >'"、strip_tags($string, $allowedtags))); <br> }<br> $string を返します。 }<br> <br> 関数drop_table($tbname) <br> { <br> Return $this->query("存在する場合はテーブルを削除 `{$tbname}`",true); }<br> <br> 関数バージョン() <br> { <br> mysql_get_server_info($this->dblink) を返します <br> }<br> }<br> <br><br> <br>この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。 <br> <br> <br><br> </div>http://www.bkjia.com/PHPjc/923906.html<p>www.bkjia.com</p>tru​​e<p align="left"></p> <div style="display:none;">http://www.bkjia.com/PHPjc/923906.html<span id="url" itemprop="url"></span>技術記事<span id="indexUrl" itemprop="indexUrl"></span> mysql データベースを操作するためのシンプルで実践的な PHP クラス、シンプルで実践的な mysql この記事では、mysql データベースを操作するためのシンプルで実践的な PHP クラスについて説明します。参考のためにみんなで共有してください。詳細は以下の通りです...<span id="isOriginal" itemprop="isOriginal"></span><span id="isBasedOnUrl" itemprop="isBasedOnUrl"></span> <span id="genre" itemprop="genre"></span> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="thinkphp キャッシュ技術詳細説明、thinkphp キャッシュ詳細説明_PHP チュートリアル" href="http://m.php.cn/ja/faq/292753.html">thinkphp キャッシュ技術詳細説明、thinkphp キャッシュ詳細説明_PHP チュートリアル</a></span><span>次の記事:<a class="dBlack" title="thinkphp キャッシュ技術詳細説明、thinkphp キャッシュ詳細説明_PHP チュートリアル" href="http://m.php.cn/ja/faq/292755.html">thinkphp キャッシュ技術詳細説明、thinkphp キャッシュ詳細説明_PHP チュートリアル</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="http://m.php.cn/ja/about/us.html">私たちについて</a><a href="http://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="http://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>