<マップ>');
$this->pconnect=$pconnect;
$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')
{
@mysql_unbuffered_query("set sql_mode = ''");
}
@mysql_select_db($database) または Fatal_error("テーブルを選択できません!");
$this->dblink; を返す
}
関数クエリ($sql,$unbuffered=false)
{
// $sql をエコーします。' ';
$this->rs=$unbuffered?mysql_unbuffered_query($sql,$this->dblink):mysql_query($sql,$this->dblink);
//(!$this->rs||!is_resource($this->rs)) && Fatal_error("クエリの実行に失敗しました! error:".mysql_error());
if(!$this->rs)fatal_error('SQL ステートメント '.$sql.' の実行時に次のエラーが発生しました:'.mysql_error());
$this->rs; を返す
}
関数 fetch_one($sql)
{
$this->rs=$this->クエリ($sql);
dircms_strips チュートリアルを返す lashes($this->filter_pass(mysql_fetch_array($this->rs,mysql_assoc)));
}
function get_maxfield($filed='id',$table) // $table テーブルの $filed フィールドの最大値を取得します
{
$r=$this->fetch_one("select {$table}.{$filed} from `{$table}` order by `{$table}`.`{$filed}` desc limit 0,1") ;
$r[$filed] を返します;
}
関数 fetch_all($sql)
{
$this->rs=$this->クエリ($sql);
$result=array();
while($rows=mysql_fetch_array($this->rs,mysql_assoc))
{
$result[]=$rows;
}
mysql_free_result($this->rs);
dircms_stripslashes($this->filter_pass($result)) を返します
}
関数 fetch_all_withkey($sql,$key='id')
{
$this->rs=$this->クエリ($sql);
$result=array();
while($rows=mysql_fetch_array($this->rs,mysql_assoc))
{
$result[$rows[$key]]=$rows;
}
mysql_free_result($this->rs);
dircms_stripslashes($this->filter_pass($result)) を返します
}
関数 last_insert_id()
{
if(($insertid=mysql_insert_id($this->dblink))>0)return $insertid;
else //auto_increment のカラム型が bigint の場合、mysql_insert_id() によって返される値は正しくありません。
{
$result=$this->fetch_one('last_insert_id() を insertid として選択');
$result['insertid']; を返します
}
}
関数挿入($tbname,$varray,$replace=false)
{
$varray=$this->escape($varray);
$tb_fields=$this->get_fields($tbname); // mb.bKjia.c0m 升级一下,增加判断字段有無
foreach($varray as $key => $value)
{
if(in_array($key,$tb_fields))
{
$filds[]='`'.$key.'`';
$values[]=is_string($value)?'''.$value.''':$value;
}
}
if($fileds)
{
$filds=implode(',',$fileds);
$filds=str_replace(''','`',$fileds);
$values=implode(',',$values);
$sql=$replace?"{$tbname}({$fileds}) の値 ({$values}) に置き換えます":"{$tbname}({$fileds}) の値 ({$values}) に挿入します";
$this->query($sql,true);
return $this->last_insert_id();
}
それ以外の場合は false を返します;
}
関数更新($tbname, $array, $where = '')
{
$array=$this->escape($array);
if($where)
{
$tb_fields=$this->get_fields($tbname); // www.bKjia.c0m,增加判断字段有無
$sql = '';
foreach($array as $k=>$v)
{
if(in_array($k,$tb_fields))
{
$k=str_replace('','',$k);
$sql .= ", `$k`='$v'";
}
}
$sql = substr($sql, 1);
if($sql)$sql = "更新 `$tbname` set $sql where $where";
それ以外の場合は true を返します;
}
それ以外
{
$sql = "`$tbname`(`".implode('`,`', array_keys($array))."`) 値('".implode("','", $array) に置き換えます。" ')";
}
return $this->query($sql,true);
}
function mysql_delete($tbname,$idarray,$filedname='id')
{
$idwhere=is_array($idarray)?implode(',',$idarray):intval($idarray);
$where=is_array($idarray)?"{$tbname}.{$filedname} in ({$idwhere})":" {$tbname}.{$filedname}={$idwhere}";
return $this->query("delete from {$tbname} where {$where}",true);
}
関数 get_fields($table)
{
$fields=array();
$result=$this->fetch_all("`{$table}` の列を表示");
foreach($result as $val)
{
$fields[]=$val['フィールド'];
}
$fields を返します;
}
関数 get_table_status($database)
{
$status=array();
$r=$this->fetch_all("`".$database."`" からテーブルのステータスを表示); /////// show table ステータスの特性は show table と同様ですが、各テーブルの大量の情報を提供できます。
foreach($r as $v)
{
$status[]=$v;
}
$status を返します;
}
関数 get_one_table_status($table)
{
return $this->fetch_one("'$table' のようなテーブルのステータスを表示");
}
function create_fields($tbname,$fieldname,$size=0,$type='varchar') // 2010-5-14 修正一下
{
if($size)
{
$size=strtoupper($type)=='varchar'?$size:8;
$this->query("alter table `{$tbname}` add `$fieldname` {$type}( {$size} ) not null",true);
}
else $this->query("alter table `{$tbname}` add `$fieldname` mediatext not null",true);
true を返します;
}
function get_tables() //すべての表表名を取得します
{
$tables=array();
$r=$this->fetch_all("テーブルを表示");
foreach($r as $v)
{
foreach($v として $v_)
{
$tables[]=$v_;
}
}
$tables を返します;
}
function create_model_table($tbname) //コンテンツ モデル テーブルを作成します (開始: 最初はフィールド contentid int(20) のみ、コンテンツ テーブルに使用されます。 ////////////////// / //// 更新: 2010-5-20 `content` メディアテキストが null ではありません、フィールドはデフォルトで追加されました)
{
if(in_array($tbname,$this->get_tables())) return false; ///////////////////// テーブル名がすでに存在する場合、 falseを返します
if($this->query("テーブル `{$tbname}` を作成します ( )
`contentid` mediaint(8) が null ではありません、
`content` メディアテキストが null ではありません、
キー(`コンテンツID`)
) エンジン = myisam デフォルト charset=utf8",true))return true; ///////////////////// 成功時に true を返します
false を返す /////////////失敗した場合は false を返します
}
function create_table($tbname) //メンバー モデルの空のテーブルを作成します (最初はフィールド userid int(20) のみ、メンバー テーブルに使用、2010-4-26)
{
if(in_array($tbname,$this->get_tables())) return false;
if($this->query("テーブル `{$tbname}` を作成します ( )
`userid` mediaint(8) が null ではありません、
キー ( `userid` )
) エンジン = myisam デフォルト charset=utf8",true))true を返します;
false を返します;
}
functionscape($str) // 危険な文字をフィルタリングします
{
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; を返します
}
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'))
{
if(is_array($string))
{
foreach($string as $key => $val) $string[$key] = $this->filter_pass($val, allowed_htmltags);
}
それ以外
{
$string = preg_replace('/s('.implode('|', $disabledattributes).').*?([s>])/', '2', preg_replace('/<(.*?) >/ie', "'<'.preg_replace(array('/Web ページの効果:[^"']*/i', '/(".implode('|', $disabledattributes).")[ tn ]*=[ tn]*["'][^"']*["']/i', '/s+/')、array('', '', ' ')、stripslashes('1' ) ) '>'"、strip_tags($string, $allowedtags)));
}
$string を返します;
}
関数drop_table($tbname)
{
Return $this->query("存在する場合はテーブルを削除 `{$tbname}`",true);
}
関数バージョン()
{
mysql_get_server_info($this->dblink)を返します;
}
}
http://www.bkjia.com/PHPjc/629738.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629738.html技術記事 php チュートリアル mysql チュートリアル データベース チュートリアル 接続クラス このデータベース接続クラスは、SQL アンチインジェクション関数を自動的にロードし、いくつかの機密性の高い SQL クエリ キーワードをフィルタリングし、判断ワードも追加します...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
|