코드 복사 코드는 다음과 같습니다.
/************************************ ************************************************** * ******************************
자신의 개발을 촉진하고 다음과 같은 거대 기업을 사용하고 싶지 않습니다. 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教程有兴趣的朋友有所帮助。