>백엔드 개발 >PHP 튜토리얼 >phplib DB 클래스의 LinearGradientBrush 향상된 버전

phplib DB 클래스의 LinearGradientBrush 향상된 버전

WBOY
WBOY원래의
2016-07-29 08:37:46949검색

코드 복사 코드는 다음과 같습니다.


/************************************ ************************************************** * ******************************
자신의 개발을 촉진하고 다음과 같은 거대 기업을 사용하고 싶지 않습니다. ADODB 및 PEAR::DB,
PHPLib DB 클래스를 기반으로 사용되며 PEAR::DB 클래스를 참조하세요. 캡슐화된 DB 클래스는 간단하고 사용하기 쉽고 매우 편리합니다.
MySQL有效
[ 连接数据库 ]
//包含数据库处理类文件
include_once("database.inc.php");
//本地数据库配置
define("DB_HOST",    "localhost"); //数据库服务器
define("DB_USER_NAME",   "root");  //数据库用户名
define("DB_USER_PASS",   "");   //密码
define("DB_DATABASE",   "test");  //数据库
//连接本地数据库
$db = new DB_Sql();
$db->connect(DB_DATABASE, DB_HOST, DB_USER_NAME, DB_USER_PASS);
[ 使用方法 ]
//获取所有记录
$sql = "SELECT * FROM table1";
$all_record = $db->get_all($sql);
//获取一条
$sql = "SELECT * FROM table1 WHERE id = '1'";
$one_row = $db->get_one($sql);
//分页查询,提取20条记录
$sql = "SELECT * FROM table1";
$page_record = $db->limit_query($sql, $start=0, $offset=20, $order="ORDER BY id DESC");
//提取指定数目的记录
$sql = "SELECT * FROM table1";
$limit_record = $db->get_limit($sql,10);
//统计记录数,统计所有类型为学生的
$count = $db->count("table1", "id", "type = 'student'");
//插入一条记录
$info_array = array(
  "name"  => "heiyeluren",
  "type"  => "student",
  "age"  => "22",
  "gender" => "boy"
 );
$db->insert("table1", $info_array);
//更新一条记录
$info_array = array(
  "name"  => "heiyeluren",
  "type"  => "teacher",
  "age"  => "22",
  "gender" => "boy"
 );
$db->update("table1", $info_array, "name = 'heiyeluren'");
//删除记录
$db->delete("table1", "name = 'heiyeluren'");
//执行一条无结果集的SQL
$db->execute("DELETE FROM table1 WHERE name = 'heiyeluren'");
********************************************************************************************************/
/**
 * 文件: database.inc.php
 * 描述: 数据库操作类
 * 说明: 本库使用PHPLib DB库作为核心, 同时增加一些实用方法, 详细参考注释
 */
class DB_Sql 
{
  /* public: connection parameters */
  var $Host     = "";
  var $Database = "";
  var $User     = "";
  var $Password = "";
  /* public: configuration parameters */
  var $Auto_Free     = 1;     ## Set to 1 for automatic mysql_free_result()
  var $Debug         = 0;     ## Set to 1 for debugging messages.
  var $Halt_On_Error = "yes"; ## "yes" (halt with message), "no" (ignore errors quietly), "report" (ignore errror, but spit a warning)
  var $PConnect      = 0;     ## Set to 1 to use persistent database connections
  var $Seq_Table     = "db_sequence";
  /* public: result array and current row number */
  var $Record   = array();
  var $Row;
  /* public: current error number and error text */
  var $Errno    = 0;
  var $Error    = "";
  /* public: this is an api revision, not a CVS revision. */
  var $type     = "mysql";
  //var $revision = "1.2";
  /* private: link and query handles */
  var $Link_ID  = 0;
  var $Query_ID = 0;
  var $locked   = false;      ## 잠금이 있는 동안 true로 설정
  /* public: constructor */
  function DB_Sql() {
    $this->query($query);
  }
  /* public: 일부 사소한 보고 */
  function link_id() {
    return $this->Link_ID;
  }
  function query_id() {
    return $this->Query_ID;
  }
  /* 공용: 연결 관리 */
  기능 connect($Database = "", $Host = "", $User = "", $Password = "") {
    / * 기본값 처리 */
    if ("" == $Database) 
      $Database = $this->Database;
    if ("" == $Host) 
      $Host     = $this->Host;
    if ("" == $User) 
      $User     = $this->User;
    if ("" == $Password) 
      $Password = $this->Password;
      
    /* 연결 설정, 데이터베이스 선택 */
    if ( 0 == $this->Link_ID ) {
      if(!$this->PConnect) {
        $this ->Link_ID = mysql_connect($Host, $User, $Password);
      } else {
        $this->Link_ID = mysql_pconnect($Host, $User, $Password); 
      }
      if (!$this->Link_ID) {
        $this->halt("connect($Host, $User, $Password)가 실패했습니다.");
        0을 반환합니다.
      }
      if (!@mysql_select_db($Database,$this->Link_ID)) {
        $this->halt("데이터베이스를 사용할 수 없음".$Database);
        0을 반환합니다.
      }
    }
    return $this->Link_ID;
  }
  /* public: 쿼리 결과 삭제 */
  function free() {
      @mysql_free_result($this->Query_ID);
      $this->Query_ID = 0;
  }
  /* public: 쿼리 수행 */
  함수 쿼리($Query_String) {
    /* PHP4가 질식하므로 빈 쿼리는 사용하지 마세요. */
    if ($Query_String == "")
      /* 빈 쿼리 문자열은 생성자에서 전달됩니다.
       * 쿼리 없이 클래스를 호출할 때, 예: 
       * 다음과 같은 상황에서: '$db = new DB_Sql_Subclass;'
       */
      0을 반환합니다.
    if (!$this->connect()) {
      return 0; /* 우리는 이미 그것에 대해 connect()에서 불평했습니다. */
    };
    # 새 쿼리, 이전 결과를 삭제합니다.
    if ($this->Query_ID) {
      $this->free();
    }
    if ($this->Debug)
      printf("디버그: 쿼리 = %s
n", $Query_String);
    $this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
    $this->행   = 0;
    $this->Errno = mysql_errno();
    $this->오류 = mysql_error();
    if (!$this->Query_ID) {
      $this->halt("잘못된 SQL: ".$Query_String);
    }
    # 실패하면 nada를 반환합니다. 괜찮습니다.
    return $this->Query_ID;
  }
  /* public: walk 결과 세트 */
  function next_record() {
    if (!$this->Query_ID) {
      $this->halt("next_record("next_record) 대기 중인 쿼리 없이 호출되었습니다.");
      0을 반환합니다.
    }
    $this->Record = @mysql_fetch_array($this->Query_ID);
    $this->행    = 1;
    $this->Errno  = mysql_errno();
    $this->오류  = mysql_error();
    $stat = is_array($this->Record);
    if (!$stat && $this->Auto_Free) {
      $this->free();
    }
    return $stat;
  }
  /* public: 결과 집합의 위치 */
  함수 탐색($pos = 0) {
    $status = @mysql_data_seek($this->Query_ID, $pos);
    if ($status)
      $this->Row = $pos;
    else {
      $this->halt("seek($pos) 실패: 결과에 ".$this->num_rows()." 행이 있습니다.");
      /* 하루를 구하기 위해 반쯤 시도했지만,
       * 하지만 이 문서가 문서화되었거나
       * 바람직한 행동이라고 생각하지 마세요.
       */
      @mysql_data_seek($this->Query_ID, $this->num_rows());
      $this->Row = $this->num_rows();
      0을 반환합니다.
    }
    1을 반환합니다.
  }
  /* public: 테이블 잠금 */
  기능 잠금($table, $mode = "write") {
    $query = "테이블 잠금";
    if(is_array($table)) {
      while(list($key,$value) = each($table)) {
        // 텍스트 키는 '읽기', '로컬 읽기', "쓰기", "낮은 우선순위 쓰기"
        if(is_int($key)) $key = $mode;
        if(strpos($value, ",")) {
          $query .= str_replace(",", " $key, ", $value) . " $키, ";
        } else {
         $query .= "$value $key, ";
        }
      }
      $query = substr($query, 0, -2);
    } elseif(strpos($table, ",")) {
      $query .= str_replace(",", " $mode, ", $table) . " $mode";
    } else {
      $query .= "$table $mode";
    }
    if(!$this->query($query)) {
      $this->halt("lock() 실패했습니다.");
      false를 반환합니다.
    }
    $this->locked = true;
    true를 반환합니다.
  }
  function unlock() {
    // 잠재적인 루프를 방지하기 위해 잠금 해제 전에 설정
    $this->locked = false;
    if(!$this->query("테이블 잠금 해제")) {
      $this->halt("unlock() 실패했습니다.");
      false를 반환합니다.
    }
    true를 반환합니다.
  }
  /* 공개: 결과 평가(크기, 너비) */
  function Affected_rows() {
    return @mysql_affected_rows($this->Link_ID);
  }
  function num_rows() {
    return @mysql_num_rows($this->Query_ID);
  }
  function num_fields() {
    return @mysql_num_fields($this->Query_ID);
  }
  /* 공개: 약칭 표기 */
  function nf() {
    return $this->num_rows();
  }
  function np() {
    인쇄 $this->num_rows();
  }
  함수 f($Name) {
    if (isset($this->Record[$Name])) {
      return $this->Record[$Name];
    }
  }
  함수 p($Name) {
    if (isset($this->Record[$Name])) {
      인쇄 $this->Record[$ 이름];
    }
  }
  /* 공개: 시퀀스 번호 */
  함수 nextid($seq_name) {
    /* 현재 잠금이 없는 경우, 시퀀스 테이블 잠금 */
    if(! $this->locked) {
      if($this->lock($this->Seq_Table)) {
        $locked = true;
      } else {
        $this->halt("잠글 수 없습니다.".$this->Seq_Table." - 생성되었나요?");
        0을 반환합니다.
      }
    }
    /* 시퀀스 번호 및 증분 가져오기*/
    $q = sprintf("seq_name = '%s'에서 nextid 선택",
             $this- > ;Seq_Table,
               $seq_name);
    if(!$this->query($q)) {
      $this->halt('nextid:'.$q에서 쿼리가 실패했습니다.);
      0을 반환합니다.
    }
    /* 현재 값이 없으면 하나 만듭니다.*/
    if(!$this->next_record()) {
      $currentid = 0;
      $q = sprintf("%s 값('%s', %s)에 삽입",
               $this->Seq_Table,
               $seq_name,        $currentid);
      if(!$this->query($q)) {
        $this->halt('nextid:'.$q에서 쿼리가 실패했습니다.);
        0을 반환합니다.
      }
    } else {
      $currentid = $this->f("nextid");
    }
    $nextid = $currentid   1;
    $q = sprintf("update %s set nextid = '%s' where seq_name = '%s'",
             $this->Seq_Table,
              $nextid,          $seq_name) ;
    if(!$this->query($q)) {
      $this->halt('nextid:'.$q에서 쿼리가 실패했습니다.);
      0을 반환합니다.
    }
    /* nexttid()가 시퀀스 테이블을 잠근 경우 잠금을 해제하세요.*/
    if($locked) {
      $this->unlock();
    }
    $nextid를 반환합니다.
  }
  /* public: 테이블 메타데이터 반환 */
  함수 메타데이터($table = "", $full = false) {
    $count = 0;
    $id    = 0;
    $res   = 배열();
    /*
     * 테이블과의 호환성 문제로 인해 메타데이터()의 동작을 변경했습니다.
     *;
     * $full에 따라 메타데이터는 다음 값을 반환합니다.
     *
     * - full은 false입니다(기본값):
     * $result[]:
     *  [0]["table "]  테이블 이름
     *   [0]["name"]   필드 이름
     *   [0]["type"]   필드 유형
     *  [0]["len"]    필드 길이
     * [0]["flags"]  필드 플래그
     *
     * - full이 true
     * $result[]:
     *   ["num_fields"] 메타데이터 레코드 수
     *   [0 ]["table"]  테이블 이름
     *   [0]["name"]   필드 이름
     *   [0]["type"]   필드 유형
     *   [0]["len"]    필드 길이
     *  [0]["flags"]  필드 플래그
     *   ["meta"][필드 이름]  필드 이름이 "필드 이름"인 필드의 인덱스
     *   이 마지막 항목은 필드가 있는 경우 사용할 수 있습니다. 이름은 있지만 색인은 없습니다.
     *   테스트:  if (isset($result['meta']['myfield'])) { ...
     */
    // $table이 지정되지 않은 경우, 우리가 함께 작업하고 있다고 가정합니다. 쿼리
    // 결과
    if ($table) {
      $this->connect();
      $id = @mysql_list_fields($this->Database, $table);
      if (!$id) {
        $this->halt("메타데이터 쿼리가 실패했습니다.");
        false를 반환합니다.
      }
    } else {
      $id = $this->Query_ID; 
      if (!$id) {
        $this->halt("지정된 쿼리가 없습니다.");
        false를 반환합니다.
      }
    }
    $count = @mysql_num_fields($id);
    // 성능 때문에 IF를 만들었습니다(one if가 $count if보다 빠릅니다)
    if (!$full) {
      for($i=0; $i<$count; $i ) {
        $res[$i]["table"] = @mysql_field_table ($id, $i);
        $res[$i]["name"]  = @mysql_field_name  ($id, $i);
        $res[$i]["type"]  = @mysql_field_type  ($id, $i);
        $res[$i]["len"]   = @mysql_field_len   ($id, $i);
        $res[$i]["flags"] = @mysql_field_flags ($id, $i);
      }
    } else { // 전체
      $res["num_fields"]= $count;
      for ($i=0; $i<$count; $i ) {
        $res[$i]["table"] = @mysql_field_table ($id, $i);
        $res[$i]["name"]  = @mysql_field_name  ($id, $i);
        $res[$i]["type"]  = @mysql_field_type  ($id, $i);
        $res[$i]["len"]   = @mysql_field_len   ($id, $i);
        $res[$i]["flags"] = @mysql_field_flags ($id, $i);
        $res["meta"][$res[$i]["name"]] = $i;
      }
    }
    //테이블에서 호출된 경우에만 결과를 해제합니다.
    if($table) {
      @mysql_free_result($id);
    }
    $res를 반환합니다.
  }
  /* public: 사용 가능한 테이블 이름 찾기 */
  function table_names() {
    $this->connect();
    $h = @mysql_query("show tables", $this->Link_ID);
    $i = 0;
    while ($info = @mysql_fetch_row($h)) {
      $return[$i]["table_name"]      = $info[0];
      $return[$i]["tablespace_name"] = $this->데이터베이스;
      $return[$i]["데이터베이스"]        = $this->데이터베이스;
      $i ;
    }
    @mysql_free_result($h);
    반환 $return;
  }
  /* private: 오류 처리 */
  함수 중지($msg) {
    $this->Error = @mysql_error($this->Link_ID);
    $this->Errno = @mysql_errno($this->Link_ID);
    if ($this->locked) {
      $this->unlock();
    }
    if ($this->Halt_On_Error == "no")
      return;
    $this->haltmsg($msg);
    if ($this->Halt_On_Error != "report")
      die("세션이 중지되었습니다.");
  }
function Halmsg($msg) {
printf("데이터베이스 오류: %s
n" , $msg);
printf("MySQL 오류: %s (%s)
n",
$this->Errno,
$this ->오류)
}

//-------------------------------- --
// 모듈: 사용자 정의 함수
// 함수: 몇 가지 실용적인 데이터베이스 처리 방법
// 작성자: heiyeluren
// 시간: 2005-12-26
// -- --------------------------------
/**
* 메소드: Execute($sql)
* 함수: SQL 문을 실행합니다. 주로 결과 집합을 반환하지 않는 SQL에 대해
* 매개변수: $sql 실행해야 하는 SQL 문입니다. 예:execute("DELETE FROM table1 WHERE id = '1'")
* 반환: 업데이트가 성공하면 True를 반환하고, 업데이트가 실패하면 False를 반환합니다.
*/
함수 실행($ sql)
{
if (empty($sql))
{
$this->error("잘못된 매개변수")
}
if (!$ this- >query($sql))
{
return false
}
return true
}
/**
* 메소드: get_all($sql)
* 함수: SQL 실행의 모든 ​​기록 가져오기
* 매개변수: $sql 실행해야 하는 SQL 예: get_all("SELECT * FROM Table1" )
* 반환: 모든 쿼리 결과를 포함하는 2차원 배열을 반환합니다
*/
함수 get_all($ sql)
{
$this->query($sql)
$result_array = array()
while($this->next_record())
{
$result_array[] = $this->Record;
}
if (count($result_array)<=0)
{
return 0; $result_array;
}
/**
* 메소드: get_one($sql)
* 함수: SQL 실행 기록 가져오기
* 매개변수: $sql 실행할 SQL 예: get_one("SELECT * FROM Table1 WHERE id = '1'")
* 반환값: 쿼리 결과가 포함된 1차원 배열을 반환합니다.
*/
function get_one($sql)
{
$this->query($sql)
if ( !$this->next_record())
{
return 0
}
return $this->Record
}
/**
* 메소드: get_limit($sql, $limit)
* 함수: SQL 실행을 위해 지정된 개수의 레코드를 가져옵니다.
* 매개변수:
* $sql 실행해야 하는 SQL입니다. 예: SELECT * FROM Table1
* $limit 제한해야 하는 레코드 수
* 예를 들어 10개의 레코드를 가져와야 하는 경우 get_limit("SELECT * FROM Table1", 10); > *
* 반환: 모든 쿼리 결과를 포함하여 반환
의 2차원 배열 */
함수 get_limit($sql, $limit)
{
$this->query($sql)
$result_array = array()
for ($i= 0; $i<$limit&&$this->next_record(); $i )
{
$result_array[] = $this->Record
}
if (count($ result_array) <= 0)
{
0 반환
}
$result_array 반환
}
 /**
* 메소드: Limit_query($sql, $start=0, $offset=20, $order="")
* 함수: 페이징 SQL 실행을 위해 지정된 개수의 레코드를 가져옵니다.
* 매개변수:
* $sql 실행해야 하는 SQL 예: SELECT * FROM Table1
* $start 레코드의 시작 수, 기본값은 0
* $offset 레코드의 오프셋, 기본값 20
* $order 정렬 방법, 기본값은 비어 있습니다. 예: ORDER BY id DESC
* 예를 들어, 0에서 10까지의 레코드를 가져와 ID 번호별로 정렬해야 합니다. get_limit("SELECT * FROM Table1", 0, 10 , "ORDER BY id DESC");
*
* 반환값: 모든 쿼리 결과가 포함된 2차원 배열
을 반환합니다.*/
 함수 limit_query($sql, $start=0, $offset=20, $order="")
 {
  $sql = $sql ." $order  LIMIT $start,$offset";
  $this->query($sql);
  $result = 배열();
  while($this->next_record())
  {
   $result[] = $this->Record;
  }
  if (count($result) <=0 )
  {
   return 0;
  }
  $result를 반환합니다.
 }
 /**
* 메서드: count($table,$field="*", $where="")
* 함수: 통계 테이블의 전체 데이터 개수
* 파라미터:
* $table 통계 필요 테이블 이름
* $field 계산해야 하는 필드, 기본값은 *
* $where 조건문, 기본값은 비어 있음
* 예를 들어 20세 미만의 모든 사용자 계산 ID에 따라 count("user_table" , "id", "user_age < 20")
*
* 반환값: 통계 결과 개수를 반환합니다
*/
 함수 count($table,$field="*", $where="")
 {
  $sql = (비어 있음( $where) ?  "$table에서 COUNT($field) 선택" : "$table WHERE $where에서 COUNT($field) 선택");
  $result = $this->get_one($sql);
  if (!is_array($result))
  {
   return 0;
  }
  $result[0] 반환;
 }
 /**
* 메소드: insert($table,$dataArray)
* 함수: 테이블에 레코드 삽입
* 파라미터:
* $table 삽입할 테이블 이름
* $dataArray 필수 필드 및 값의 배열을 삽입합니다. 키는 필드 이름이고 값은 필드 값입니다. 예: array("user_name"=>"Zhang San", "user_age"=>"20년 old");
* 예를 들어 사용자 Zhang San 삽입, 나이는 20세, insert("users", array("user_name"=>"Zhang San", "user_age"=>"20세") )
*
* 반환: 레코드가 성공적으로 삽입되면 True를 반환하고, 실패하면 False를 반환합니다.
*/
 함수 삽입($table,$dataArray)
 {
  if (!is_array($dataArray) || count($dataArray)< ;=0)
  {
   $this->error("잘못된 매개변수");
  }
  while(list($key,$val) = each($dataArray))
  {
   $field .= "$key,";
   $value .= "'$val',";
  }
  $field = substr($field, 0, -1);
  $value = substr($value, 0, -1);
  $sql = "$table에 삽입($field)값($value)";
  if (!$this->query($sql))
  {
   false를 반환합니다.
  }
  true를 반환합니다.
 }
 /**
* 메소드: update($talbe, $dataArray, $where)
* 함수: 레코드 업데이트
* 파라미터:
* $table 업데이트가 필요한 테이블 이름
* $dataArray 필수 필드 및 값의 배열을 업데이트합니다. 키는 필드 이름이고 값은 필드 값입니다. 예: array("user_name"=>"Zhang San", "user_age"=>" 20세");
* $where 조건문
* 예를 들어 Zhang San이라는 사용자는 Li Si로 업데이트되고 나이는 21입니다.
* update("users", array("user_name"=>"Zhang San", "user_age"=> ;"20살"), "user_name='Zhang San'")
*
* 반환: 업데이트가 다음과 같은 경우 True입니다. 성공, 업데이트에 실패하면 False
*/
 함수 업데이트($talbe, $dataArray, $where)
 {
  if (!is_array($dataArray) || count($dataArray)< =0)
  {
   $this->error("잘못된 매개변수");
  }
  while(list($key,$val) = each($dataArray))
  {
   $value .= "$key = '$val',";
  }
  $value = substr($value, 0, -1);
  $sql = "$talbe 설정 $value WHERE $where 업데이트";
  if (!$this->query($sql))
  {
   false를 반환합니다.
  }
  true를 반환합니다.
 }
 /**
* 메소드: delete($table, $where)
* 함수: 레코드 삭제
* 파라미터:
* $table 레코드를 삭제하려는 테이블 이름
* $where 레코드를 삭제해야 하는 경우 조건문
* 예를 들어 Zhang San이라는 사용자를 삭제하려면 delete("users", "user_name='Zhang San'")
*
* 반환: 업데이트가 성공하면 True를 반환하고, 실패하면 False를 반환
*/
 function delete($table, $where)
 {
  if (empty($where))
  {
   $ this->error("잘못된 매개변수");
  }
  $sql = "$table에서 WHERE $where에서 삭제";
  if (!$this->query($sql))
  {
   false를 반환합니다.
  }
  true를 반환합니다.
 }
 /**
* 메소드: error($msg="")
* 함수: 오류 메시지 표시 후 스크립트 중단
* 매개변수: $msg 표시할 오류 메시지
* 반환: 없음
*/
 함수 error($msg="")
 {
  echo "오류: $msgn  exit();
 }
 /**
* 메소드: get_insert_id()
* 함수: 마지막에 삽입된 ID 가져오기
* 매개변수: 매개변수 없음
* 반환: 종료 성공 시 ID 반환, 실패 시 0 반환
*/
 함수 get_insert_id()
 {
  return mysql_insert_id($this->Link_ID);
 }
 /**
* 메소드: close()
* 함수: 현재 데이터베이스 연결을 닫습니다.
* 매개변수: 매개변수 없음
* 반환: 성공하면 true를 반환하고, 실패하면 false를 반환합니다.
*/
 함수 close()
 {
  return mysql_close($this->Link_ID);
 } 
}
?>

以上就介绍了lineargradientbrush 加强版phplib的DB类,包括了lineargradientbrush방면적内容,希望对PHP教程有兴趣的朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.