ホームページ  >  記事  >  バックエンド開発  >  php mysql 完全なデータベース接続 class_PHP チュートリアル

php mysql 完全なデータベース接続 class_PHP チュートリアル

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

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

/*コンストラクター*/
パブリック関数 __construct($db_host, $db_user, $db_pwd, $db_database, $conn, $coding) {
$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);
}
}
mysql_query("set names $this->coding");
}

/*データベース実行ステートメント、実行可能クエリ、追加、変更、削除などの SQL ステートメント*/
パブリック関数クエリ($sql) {
if ($sql == "") {
$this->show_error("SQL ステートメント エラー:", "SQL クエリ ステートメントが空です");
}
$this->sql = $sql;

$result = mysql_query($this->sql, $this->conn);

if (!$result) {
//デバッグ時に使用し、SQL文でエラーが発生した際に自動的に出力します
if ($this->show_error) {
$this->show_error("エラー SQL ステートメント:", $this->sql);
}
} その他 {
$this->結果 = $結果;
}
$this->result;
を返す }

/*新しいデータベースを作成して追加*/
パブリック関数 create_database($database_name) {
$database = $database_name;
$sqldatabase = 'データベースを作成' . $this->クエリ($sqldatabase);
}

/*サーバー上のすべてのデータベースをクエリ*/

//より直観的に表示するために、システム データベースとユーザー データベースを分離しますか?
パブリック関数 show_databases() {
$this->query("データベースの表示");
echo "既存のデータベース:" . $amount = $this->db_num_rows($rs);
エコー "
";
$i = 1;
while ($row = $this->fetch_array($rs)) {
echo "$i $row[データベース]";
エコー "
";
$i++;
}
}

//ホスト内のすべてのデータベース名を配列形式で返します

パブリック関数データベース() {
$rsptr = mysql_list_dbs($this->conn);
$i = 0;
$cnt = mysql_num_rows($rsptr);
while ($i $rs[] = mysql_db_name($rsptr, $i);
$i++;
}
$rs を返します;
}

/*データベース内のすべてのテーブルをクエリします*/
パブリック関数 show_tables($database_name) {
$this->query("テーブルを表示");
echo "既存のデータベース:" . $amount = $this->db_num_rows($rs);
エコー "
";
$i = 1;
while ($row = $this->fetch_array($rs)) {
$columnname = "tables_in_" . $database_name;
echo "$i $row[$columnname]";
エコー "
";
$i++;
}
}

/*
mysql_fetch_row() 配列 $row[0],$row[1],$row[2]
mysql_fetch_array() 配列 $row[0] または $row[id]
mysql_fetch_assoc() 配列では、大文字と小文字を区別するために $row->content フィールドが使用されます
mysql_fetch_object() オブジェクトは $row[id] を使用し、$row[content] フィールドは大文字と小文字が区別されます
*/

/*結果データを取得*/
パブリック関数 mysql_result_li() {
mysql_result($str);を返します
}

/*レコードセットを取得し、配列インデックスと関連付けを取得し、$row['content'] を使用します */
パブリック関数 fetch_array($resultt="") {
if($resultt<>""){
mysql_fetch_array($resultt)を返します;
}その他{
mysql_fetch_array($this->result)を返します;
}
}

//連想配列を取得し、$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) {
エコー "$table $condition から $columnname を選択";
} その他 {
$this->query("$table $condition から $columnname を選択");
}
}

//削除を簡略化します del
パブリック関数 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, '正常に追加されました!');
}
}

//簡易修正アップデート
パブリック関数 update($table, $mod_content, $condition, $url = '') {
//echo "update $table set $mod_content where $condition";
if ($this->query("update $table set $mod_content where $condition")) {
if (!empty ($url))
$this->get_admin_msg($url);
}
}

/*前の挿入操作によって生成された ID を取得します*/
パブリック関数 insert_id() {
mysql_insert_id() を返します;
}

//特定のデータレコードを指します
パブリック関数 db_​​data_seek($id) {
if ($id > 0) {
$id = $id -1;
}
if (!@ mysql_data_seek($this->result, $id)) {
$this->show_error("SQL ステートメントが正しくありません:", "指定されたデータは空です");
}
$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 . "rn$this->sql" . "rn客户ip:$ip" . "rn时间 :$time" . "rnrn";

    $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)) {
      //默认的 mode 是 0777,意味着最大可能的访问权
      die("upload files directory does not exist and creation failed");
     }
    }

    //建立txt日期文件
    if (!file_exists($file_path)) {

     //echo "建立日期文件";
     fopen($file_path, "w+");

     //首先要确定文件存在并且可写
     if (is_writable($file_path)) {
      //使用添加模式打开$filename,文件指针将会在文件的开头
      if (!$handle = fopen($file_path, 'a')) {
       echo "不能打开文件 $filename";
       exit;
      }

      //将$somecontent写入到我们打开的文件中。
      if (!fwrite($handle, $error_content)) {
       echo "不能写入到文件 $filename";
       exit;
      }

      //echo "文件 $filename 写入成功";

      echo "——错误记录被保存!";

      //关闭文件
      fclose($handle);
     } else {
      echo "文件 $filename 不可写";
     }

    } else {
     //首先要确定文件存在并且可写
     if (is_writable($file_path)) {
      //使用添加模式打开$filename,文件指针将会在文件的开头
      if (!$handle = fopen($file_path, 'a')) {
       echo "不能打开文件 $filename";
       exit;
      }

      //将$somecontent写入到我们打开的文件中。
      if (!fwrite($handle, $error_content)) {
       echo "不能写入到文件 $filename";
       exit;
      }

      //echo "文件 $filename 写入成功";
      echo "——错误记录被保存!";

      //关闭文件
      fclose($handle);
     } else {
      echo "文件 $filename 不可写";
     }
    }

   }
   echo "
";
   if ($this->is_error) {
    exit;
   }
  }
  echo "

";
echo "
";

エコー "
";
}

//結果セットを解放します
パブリック関数 free() {
@ mysql_free_result($this->result);
}

//データベースの選択
パブリック関数 select_db($db_database) {
mysql_select_db($db_database) を返します;
}

//フィールド数をクエリ
パブリック関数 num_fields($table_name) {
//return mysql_num_fields($this->result);
$this->query("select * from $table_name");
エコー "
";
echo "フィールドの数:" . $total = mysql_num_fields($this->result);
echo "

";<br>
for ($i = 0; $i 
Print_r(mysql_fetch_field($this->result, $i));<br>
}<br>
echo "
";
エコー "
";
}

//mysqlサーバー情報を取得します
パブリック関数 mysql_server($num = '') {
スイッチ ($num) {
ケース1:
mysql_get_server_info() //mysql サーバー情報を返します
休憩

ケース2:
Return mysql_get_host_info() //mysql ホスト情報を取得します
休憩

ケース3:
Return mysql_get_client_info() //mysql クライアント情報を取得します
休憩

ケース4:
Return mysql_get_proto_info() //mysql プロトコル情報を取得します
休憩

デフォルト:
Return mysql_get_client_info(); // デフォルトで mysql のバージョン情報を取得します
}
}

//デストラクター、データベースを自動的に閉じる、ガベージ コレクション メカニズム
パブリック関数 __destruct() {
if (!empty ($this->result)) {
$this->free();
}
mysql_close($this->conn);
} //関数 __destruct();

/*クライアントの実際の IP アドレスを取得します*/
関数 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);
}
function inject_check($sql_str) { //インジェクションを防止
$check = eregi('select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str);
if ($check) {
echo "不正な挿入コンテンツを入力してください!";
終了 ();
} その他 {
$sql_str;
を返します }
}
function checkurl() { //オリジンをチェック
if (preg_replace("/httpstutorial?://([^:/]+).*/i", "1", $_server['http_referer']) !== preg_replace("/([^:] + ).*/", "1", $_server['http_host'])) {
Header("場所: http://www.zhutiai.com");
exit();
}
}

}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/630762.html技術記事 php チュートリアル mysql チュートリアル 完全なデータベース チュートリアル 接続クラス */ class mysql { private $db_host { //データベース ユーザー名 private $db_pwd;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。