ホームページ  >  記事  >  バックエンド開発  >  mysql操作class_PHPチュートリアル

mysql操作class_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:49:16879ブラウズ

/**
* データベース操作クラス
* 2011/8/25
*kcj
**/
クラス MyDB {
プライベート $db_host //データベースホスト名
プライベート $db_user //データベース ユーザー名
プライベート $db_pwd //データベースパスワード
; プライベート $db_database //データベース名
プライベート $conn //接続 ID
private $result; //実行したクエリコマンドの結果リソース識別子
private $row //返されるエントリの数
プライベート $sql; //SQL 実行ステートメント
プライベート $coding //データベースエンコーディング
Private $bulletin=true; // エラーログを有効にするかどうか
Private $show_error=false; //テスト段階ではすべてのエラーが表示されますが、これにはセキュリティ上のリスクがあり、デフォルトでは閉じられます
Private $is_error=false; //エラーが検出されたときにすぐに終了するかどうか、デフォルトは true ですが、問題が発生したときに何も表示されないのはユーザーにとって非常に不快なため、有効にしないことをお勧めします
//コンストラクター関数
関数 __construct($db_host,$db_user,$db_pwd,$db_database,$conn,$doding){
$this->db_host=$db_host; $this->db_user=$db_user; $this->db_pwd=$db_pwd; $this->db_database=$db_database; $this->conn=$conn; $this->coding=$coding; $this->connect();
}
//データベース接続
パブリック関数 connect(){
If($this->conn=="pconn"){
// 永久接続
$this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd); }その他{
外出 $this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd); }
If(!mysql_select_db($this->db_database,$this->conn)){
If($this->show_error){
​​ ​ ​ ​ ​ ​ ​​                                                                        }
}

//データベース実行ステートメント、実行可能クエリ、追加、変更、削除などの SQL ステートメント
パブリック関数クエリ($sql){
if($sql==""){
$this->show_error("SQL ステートメント エラー:","SQL ステートメントが空です"); }
$this->sql=$sql; $result=mysql_query($this->sql,$this->conn);If(!$result){
If($this->show_error){
$this->show_error("SQL ステートメントのエラー: ",$this->sql);                                                                        }else {
$this->結果
}
$ の結果を返します。 }
//新しいデータベースを作成して追加します
パブリック関数 create_database($database_name){
$database=$database_name; $sqlDatabase='データベースの作成'.$database; $this->query($sqlDatabase); }
//サーバー上のすべてのデータベースをクエリします
//より直感的に表示できるように、システム データベースをユーザーから分離します
パブリック関数 show_database(){
$this->query("データベースを表示"); echo "現在のデータベース:".$amount=$this->db_num_rows($rs); 「
」をエコーし​​ます。 $i=1; while ($row=$this->fetch_array($rs)){
echo "$i $row[データベース]"; echo "
"; $i++; }
}
//ホスト内のすべてのデータベース名を配列の形式で返します
パブリック関数データベース(){
$rsPtr=mysql_list_dbs($this->conn); $i=0; $cnt=mysql_num_rows($rsPtr); ながら ($i $rs[]=mysql_db_name($rsPtr,$i); $i++; }

$rs を返します。 }
//データベース内のすべてのテーブルをクエリします
パブリック関数 show_tables($database_name){
$this->query("show tables"); echo "既存のデータベース:".$amount=$this->db_num_rows($rs); エコー "
"; $i=1; while ($row=$this->fetch_array($rs)){
$columnName="Tables_in_".$database_name; echo "$i $row[$columnName]"; echo "
"; $i++; }
}
// 結果セットを取得します
パブリック関数 fetch_array($resultt=""){
If($resultt!=""){
return mysql_fetch_array($resultt); }else {
return mysql_fetch_array($this->result); }
}
//結果の数を取得 $row['content']
パブリック関数 mysql_result_li(){
戻り mysql_result($str); }
//連想配列を取得 $row['フィールド名']
パブリック関数 fetch_assoc(){
return mysql_fetch_assoc($this->result); }
//数値インデックス配列を取得 $row[0] $row[1] $row[2]
パブリック関数 fetch_row(){
return mysql_fetch_row($this->result); }
// オブジェクト配列を取得し、$row->content を使用します
パブリック関数 fetch_Object(){
return mysql_fetch_object($this->result); }
// 簡略化されたクエリ選択
パブリック関数 findall($table){
$this->query("select* from $table"); }
// 簡略化されたクエリ選択
パブリック関数 select($table,$columnName="*",$condition='',$debug=''){
$condition=$condition?'where'.$condition:null; if($debug){
echo "$table $condition から $columnName を選択します"; }その他{
$this->query("select $columnName from $table $condition"); }
}

//削除を簡略化します del
パブリック関数 delete($table,$condition,$url=''){
If($this->query("$condition の $table から削除")){
If(!emptyempty($url)){
$this->Get_admin_msg($url,'削除に成功しました');                                                                        }
}
// 簡略化された挿入
パブリック関数 insert($table,$columnName,$value,$url=''){
If($this->query("$table ($columnName) の値 ($value) に挿入")){
If(!emptyempty($url)){
$this->Get_admin_msg($url,'正常に追加されました');                                                                        }

}
// 簡素化された更新アップデート
パブリック関数 update($table,$mod_content,$condition,$url=''){
If($this->query("update $table set $mod_content where $condition")){
If(!emptyempty($url)){
$this->Get_admin_msg($url);                                                                        }
}
//前の挿入操作の ID を取得します
     public  function insert_id(){ 
        return  mysql_insert_id(); 
     } 
     //指向确定的一条数据记录  
     public  function db_data_seek($id){ 
        if($id>0){ 
            $id=$id-1; 
        } 
        if(!@mysql_data_seek($this->result,$id)){ 
            $this->show_error("sql语句有误:","指定的数据为空"); 
        } 
        return $this->result; 
     } 
     //根据select查询结果计算结果集条数  
     public function db_num_rows(){ 
        if($this->result=null){ 
            if($this->show_error){ 
                $this->show_error("sql语句错误:","暂时为空,没有任何内容"); 
            } 
        }else{ 
            return mysql_num_rows($this->result); 
        } 
     } 
     //根据insert update delete执行的结果驱动影响行数  
     public function db_affected_rows(){ 
        return mysql_affected_rows(); 
     } 
     //输出显示sql语句  
     public  function show_error($message="",$sql=""){ 
        if(!$sql){ 
            echo "" . $message . ""; 
            echo "
"; 
        }else{ 
             echo "

"; 
            echo "错误信息提示:
"; 
            echo "
"; 
           echo "
"; 
            echo "错误号:12142"; 
            echo "

"; 
            echo "错误原因:" . mysql_error() . "

"; 
           echo "
"; 
            echo "" . $message . ""; 
            echo "
";
echo " " . $ip = $this->getip(); If ($this->bulletin) { <br> $time = date("Y-m-d H:i:s"); "rn$this->sql" . "rn顧客 IP:$ip" . "rnrn"; <br> $server_date = date("Y-m-d"); $filename = $server_date <br> $file_path = "エラー/" <br> $error_content = $message; //$error_content="データベースが間違っているため、リンクできません"; $file = "error" //ファイルの保存ディレクトリを設定します <br>; // フォルダーを作成します <br> if(!file_exists($file)){ <br> If(!mkdir($file,0777)){ <br> die("アップロード ファイル ディレクトリが存在しないため、作成に失敗しました"); }<br> }<br> //txt 日付ファイルを作成します <br> If(!file_exists($file_path)){ <br> fopen($file_path,"w+"); If(is_writable($file_path)){ <br> If(!$handle=fopen($file_path,'a')){ <br> echo "ファイル $filename を開けません"; 出る<br>                                                                        If(!fwrite($handle,$error_content)){ <br> echo "ファイル $filename に書き込めません"; 出る<br>                                                                        echo "——エラー記録が保存されました!"; fclose($handle); <br> }else { <br> echo "ファイル $filename は書き込み可能ではありません"; } <br> }その他{ <br> If(is_writable($file_path)){ <br> If(!$handle=fopen($file_path,'a')){ <br> echo "ファイル $filename を開けません"; 出る<br>                                                                        If(!fwrite($handle,$error_content)){ <br> echo "ファイル $filename に書き込めません"; 出る<br>                                                                                    echo "——错误记录被保存!"; <br>               fclose($handle); <br>         }else { <br>             echo "文件 $filename 不可写"; <br>         } <br>     } <br>         } <br>      echo "<br />";    <br>      if ($this->is_error) { <br>           exit; <br>             } <br>         } <br>      echo "</div>"; <br> echo "</fieldset>"; エコー "<br/>"; }<br> //結果セットを解放します <br> パブリック関数 free(){ <br> @mysql_free_result($this->結果); }<br> //データベースの選択 <br> パブリック関数 select_db($db_database){ <br> mysql_select_db($db_database) を返します <br> }<br> //フィールド数を問い合わせる <br> パブリック関数 num_fields($table_name){ <br> $this->query("select * from $table_name"); エコー "<br>"; echo "フィールドの数:".$total=mysql_num_fields($this->result); for ($i=0;$i print_r(mysql_fetch_field($this->result,$i)); }<br> エコー ""; エコー "
"; }
//mysqlサーバー情報を取得します
パブリック関数 mysql_server($num=''){
スイッチ ($num){
ケース 1:
return mysql_get_server_info(); 休憩
ケース 2:
return mysql_get_host_info(); 休憩
ケース 3:
return mysql_get_client_info(); 休憩
ケース 4:
return mysql_get_proto_info(); 休憩
デフォルト:
return mysql_get_client_info(); }
}
パブリック関数 __destruct(){
If(!emptyempty($this->result)){
$this->free(); }
Mysql_close($this->conn); }
//クライアントの実際のIDアドレスを取得します
関数 getip() {
If (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
$ip = getenv("HTTP_CLIENT_IP"); } 他
If (getenv("HTTP_X_FORWARDED_FOR") &&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR"); } 他
If (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR");                                                                                                             If (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] &&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR'];                                                                                                                        $ip = "不明";                                                          リターン ($ip); }

}


?>
/**
* データベース操作クラス
* 2011/8/25
*kcj
**/
クラス MyDB {
private $db_host; //データベースホスト名
private $db_user //データベースのユーザー名
private $db_pwd //データベースパスワード
private $db_database; //データベース名
private $conn //接続ID
private $result; //実行したクエリコマンドの結果リソース識別子
private $row; //返されたエントリの数
private $sql; // SQL 実行文
private $coding; //データベースエンコーディング
private $bulletin=true; // エラーログを有効にするかどうか
private $show_error=false; //テスト段階ではすべてのエラーが表示されますが、これにはセキュリティ上のリスクがあり、デフォルトでは閉じられます
Private $is_error=false; //エラーが検出されたときにすぐに終了するかどうか、デフォルトは true ですが、問題が発生したときに何も表示されないのはユーザーにとって非常に苦痛であるため、有効にしないことをお勧めします
//コンストラクター
function __construct($db_host,$db_user,$db_pwd,$db_database,$conn,$doding){
$this->db_host=$db_host;
$this->db_user=$db_user;
$this->db_pwd=$db_pwd;
$this->db_database=$db_database;
$this->conn=$conn;
$this->coding=$coding;
$this->connect();

}
//データベース接続
パブリック関数 connect(){
if($this->conn=="pconn"){
//永続接続
$this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd);
}その他{
//繋がっていても
$this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd);
}
if(!mysql_select_db($this->db_database,$this->conn)){
If($this->show_error){
$this->show_error("データベースが利用できません:",$this->db_database);
}
}
}

//データベース実行文、クエリの追加、変更、削除などあらゆるSQL文を実行可能
パブリック関数クエリ($sql){
if($sql==""){
$this->show_error("SQL ステートメント エラー:","SQL ステートメントが空です");
}
$this->sql=$sql;
$result=mysql_query($this->sql,$this->conn);
if(!$result){
If($this->show_error){
$this->show_error("SQL ステートメントのエラー:",$this->sql);
}
}その他{
$this->結果;
}
$result を返します;
}
// 新しいデータベースを作成して追加します
パブリック関数 create_database($database_name){
$database=$database_name;
$sqlDatabase='データベースの作成'.$database;
$this->query($sqlDatabase);
}
//サーバー上のすべてのデータベースをクエリします
//より直感的に表示できるように、システム データベースをユーザーから分離します
パブリック関数 show_database(){
$this->query("データベースの表示");
echo "現在のデータベース:".$amount=$this->db_num_rows($rs);
echo "
";
$i=1;
while ($row=$this->fetch_array($rs)){
echo "$i $row[データベース]";
echo "
";
$i++;
}
}
//ホスト内のすべてのデータベース名を配列形式で返します
パブリック関数データベース(){
$rsPtr=mysql_list_dbs($this->conn);
$i=0;
$cnt=mysql_num_rows($rsPtr);
while ($i<$cnt){
$rs[]=mysql_db_name($rsPtr,$i);
$i++;
}
$rs を返します;
}
//データベース内のすべてのテーブルをクエリします
パブリック関数 show_tables($database_name){
$this->query("テーブルを表示");
echo "既存のデータベース:".$amount=$this->db_num_rows($rs);
echo "
";
$i=1;
while ($row=$this->fetch_array($rs)){
$columnName="Tables_in_".$database_name;
echo "$i $row[$columnName]";
echo "
";
$i++;
}
}
// 結果セットを取得します
パブリック関数 fetch_array($resultt=""){
if($resultt!=""){
mysql_fetch_array($resultt)を返します;
}その他{
mysql_fetch_array($this->result)を返します;
}
}
//結果の数を取得 $row['content']
パブリック関数 mysql_result_li(){
mysql_result($str);を返します
}
//連想配列を取得 $row['フィールド名']
パブリック関数 fetch_assoc(){
mysql_fetch_assoc($this->result)を返します;
}
//数値インデックス配列を取得 $row[0] $row[1] $row[2]
パブリック関数 fetch_row(){
mysql_fetch_row($this->result)を返します;
}
// オブジェクト配列を取得し、$row->content を使用します
パブリック関数 fetch_Object(){
mysql_fetch_object($this->result)を返します;
}
//クエリ選択を単純化します
パブリック関数 findall($table){
$this->query("select* from $table");
}
//クエリ選択を単純化します
public function select($table,$columnName="*",$condition='',$debug=''){
$condition=$condition?'どこ'.$condition:null;
if($debug){
echo "$table $condition から $columnName を選択";
}その他{
$this->query("$table $condition から $columnName を選択");
}
}

//削除を簡略化します del
public function delete($table,$condition,$url=''){
if($this->query("$condition の $table から削除")){
If(!empty($url)){
$this->Get_admin_msg($url,'正常に削除されました');
}
}
}
//挿入を簡略化します
public function insert($table,$columnName,$value,$url=''){
If($this->query("$table ($columnName) の値 ($value) に挿入")){
If(!empty($url)){
$this->Get_admin_msg($url,'正常に追加されました');
}
}

}
//アップデート更新を簡素化します
public function update($table,$mod_content,$condition,$url=''){
if($this->query("update $table set $mod_content where $condition")){
    if(!empty($url)){
     $this->Get_admin_msg($url);
    }
   }
  }
  //取得上一步insert操作的id
  public  function insert_id(){
   return  mysql_insert_id();
  }
  //指向确定的一条数据记录
  public  function db_data_seek($id){
   if($id>0){
    $id=$id-1;
   }
   if(!@mysql_data_seek($this->result,$id)){
    $this->show_error("sql语句有误:","指定的数据为空");
   }
   return $this->result;
  }
  //根据select查询结果计算结果集条数
  public function db_num_rows(){
   if($this->result=null){
    if($this->show_error){
     $this->show_error("sql语句错误:","暂时为空,没有任何内容");
    }
   }else{
    return mysql_num_rows($this->result);
   }
  }
  //根据insert update delete执行的结果驱动影响行数
  public function db_affected_rows(){
   return mysql_affected_rows();
  }
  //输出显示sql语句
  public  function show_error($message="",$sql=""){
   if(!$sql){
    echo "" . $message . "";
            echo "
";
   }else{
     echo "
";
            echo "错误信息提示:
";
            echo "
";
           echo "
";
            echo "错误号:12142";
            echo "

";
            echo "错误原因:" . mysql_error() . "

";
           echo "
";
            echo "" . $message . "";
            echo "
";
            echo "
" . $sql . "
";
            $ip = $this->getip();
            if ($this->bulletin) {
                $time = date("Y-m-d H:i:s");
                $message = $message . "\r\n$this->sql" . "\r\n客户IP:$ip" . "\r\n时间 :$time" . "\r\n\r\n";

                $server_date = date("Y-m-d");
                $filename = $server_date . ".txt";
                $file_path = "error/" . $filename;
                $error_content = $message;
                //$error_content="错误的数据库,不可以链接";
                $file = "error"; //设置文件保存目录
          //建立文件夹
  if(!file_exists($file)){
   if(!mkdir($file,0777)){
    die("upload files directory does not exist and creation failed");
   }
  }
    //建立txt日期文件 www.2cto.com
    if(!file_exists($file_path)){
     fopen($file_path,"w+");
     if(is_writable($file_path)){
      if(!$handle=fopen($file_path,'a')){
       echo "不能打开文件 $filename";
       exit;
      }
      if(!fwrite($handle,$error_content)){
       echo "不能写到文件 $filename";
       exit;
      }
      echo "——错误记录被保存!";
          fclose($handle);

     }else {
      echo "文件 $filename 不可写";
     }
    }else {
     if(is_writable($file_path)){
      if(!$handle=fopen($file_path,'a')){
        echo "不能打开文件 $filename";
                 exit;
      }
      if(!fwrite($handle,$error_content)){
       echo  "不能写入文件 $filename";
       exit;
      }
      echo "——错误记录被保存!";
              fclose($handle);
     }else {
      echo "文件 $filename 不可写";
     }
    }
   }
  echo "
"; 
  if ($this->is_error) {
     exit;
            }
        }
     echo "

";
echo "
";
echo "
";
}
//結果セットを解放します
パブリック関数 free(){
@mysql_free_result($this->result);
}
//データベースの選択
パブリック関数 select_db($db_database){
mysql_select_db($db_database) を返します;
}
//フィールド数を問い合わせる
パブリック関数 num_fields($table_name){
$this->query("select * from $table_name");
echo "
";
echo "フィールド数:".$total=mysql_num_fields($this->result);
for ($i=0;$i Print_r(mysql_fetch_field($this->result,$i));
}
echo "";
echo "
";
}
//mysqlサーバー情報を取得します
パブリック関数 mysql_server($num=''){
スイッチ ($num){
ケース1:
return mysql_get_server_info();
休憩
ケース 2:
return mysql_get_host_info();
休憩
ケース 3:
return mysql_get_client_info();
休憩
ケース4:
return mysql_get_proto_info();
休憩
デフォルト:
return mysql_get_client_info();
}
}
パブリック関数 __destruct(){
if(!empty($this->result)){
$this->free();
}
mysql_close($this->conn);
}
//クライアントの実際のIDアドレスを取得します
関数 getip() {
If (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
$ip = getenv("HTTP_CLIENT_IP");
} 他
If (getenv("HTTP_X_FORWARDED_FOR") &&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} 他
If (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR");
} else
If (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] &&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR'];
} else {
$ip = "不明";
}
return ($ip);
}

}


?>

chaojie2009 さんのコラムより抜粋

www.bkjia.com本当http://www.bkjia.com/PHPjc/478368.html技術記事 ?php /*** データベース操作教室 * 2011/8/25 * kcj **/ class MyDB { private $db_host; //データベースのユーザー名 private $db_pwd;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。