suchen
HeimBackend-EntwicklungPHP-Tutorialphp实现可用于mysql,mssql,pg数据库操作类_php技巧

本文实例讲述了可用mysql,mssql,pg三种数据库的数据库操作类,你只要作任何修改就可以方便的改变你数据库的类型.分享给大家供大家参考。具体分析如下:

函数清单,索引:

Open:打开数据库连接 Line:71
Close:关闭数据库连接 Line:107
SelectDB:选择数据库 Line:129
Query:创建查询 Line:151
DataSeek:移动记录指针 Line:175
FieldName:获取字段名称 Line:198
FieldType:获取字段类型 Line:220
FieldLenght:获取字段长度 Line:242
FetchRow:获取数据并保存到数组(数字索引) Line:264
FetchArray:获取数据并保存进数组(数字和关联) Line:289
FetchObject:获取数据并保存到对象(对象方式) Line:315
Result:获取结果数据 Line:341
FreeResult:刷新记录集 Line:363
RowsNumber:获取记录数量 Line:385
FieldsNumber:获取字段数量 Line:407
CurRecNumber:获取当前记录号(从0开始) Line:429
RecordNumber:获取当前行号(从1开始) Line:438
MoveFirstRec:移动到第一条记录 Line:447
MoveLastRec:移动到最后一条记录 Line:469
MovePreviousRec:移动到前一条记录 Line:495
MoveNextRec:移动到下一条记录 Line:521
MoveToRec:移动到一个特定的记录(从1开始) Line:548

php数据库操作类代码如下:

复制代码 代码如下:
/**********************************************************************************
此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg
************************************************************************************
// -函数清单 索引:
// - Open: 打开数据库连接 Line:71
// - Close: 关闭数据库连接 Line:107
// - SelectDB: 选择数据库 Line:129
// - Query: 创建查询 Line:151
// - DataSeek: 移动记录指针 Line:175
// - FieldName: 获取字段名称 Line:198
// - FieldType: 获取字段类型 Line:220
// - FieldLenght: 获取字段长度 Line:242
// - FetchRow: 获取数据并保存到数组(数字索引) Line:264
// - FetchArray: 获取数据并保存进数组(数字和关联) Line:289
// - FetchObject: 获取数据并保存到对象(对象方式) Line:315
// - Result: 获取结果数据 Line:341
// - FreeResult: 刷新记录集 Line:363
// - RowsNumber: 获取记录数量 Line:385
// - FieldsNumber: 获取字段数量 Line:407
// - CurRecNumber: 获取当前记录号(从0开始) Line:429
// - RecordNumber: 获取当前行号(从1开始) Line:438
// - MoveFirstRec: 移动到第一条记录 Line:447
// - MoveLastRec: 移动到最后一条记录 Line:469
// - MovePreviousRec: 移动到前一条记录 Line:495
// - MoveNextRec: 移动到下一条记录 Line:521
// - MoveToRec: 移动到一个特定的记录(从1开始) Line:548
************************************************************************************
//Inputs:
// - dbType: databases type: mssql, mysql, pg
// - connectType: connection type: c - common connection,
// p - open persistent connection
// - connect: for MS SQL Server - server name,
// for MySQL - hostname [:port] [:/path/to/socket] ,
// for PostgreSQL - host, port, tty, options,
// dbname (without username and password)
// - username
// - password
// - dbName: database name
// - query: SQL query
// - result: result set identifier
// - RowNumber:
// - offset: field identifier
// - ResultType: a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH
// - FieldName
//
//Returns:
// - result: result set identifier
// - connect link identifier
// - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber)
// - number of fields in the specified result set
// - number of rows in the specified result set
*************************************************************************************/
Class mDatabase
{
/***********************************成员变量定义***************************************/
var $dbType; // 数据库类型: mssql, mysql, pg
var $connectType; // 连接类型: c - common connection, p - open persistent connection
var $idCon; // 连接号
var $curRow; // current row number of data from the result
// associated with the specified result identifier array
var $seek; // current row number of data from DataSeek function array
 
/***********************************成员方法实现***************************************/
/************************************************************************************
*连接数据库的函数
*************************************************************************************/
Function Open($dbType, $c, $connect, $username = "", $password = "")
{
$this->dbType = $dbType;
Switch ($dbType) {
Case "mssql":
If ($connectType == "c") {
$idCon = mssql_connect($connect, $username, $password);
} Else {
$idCon = mssql_pconnect($connect, $username, $password);
}
Break;
Case "mysql":
If ($connectType == "c") {
$idCon = mysql_connect($connect, $username, $password);
} Else {
$idCon = mysql_pconnect($connect, $username, $password);
}
Break;
Case "pg":
If ($connectType == "c") {
$idCon = pg_connect($connect . " user=" . $username . " password=" . $password);
} Else {
$idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password);
}
Break;
Default:
$idCon = 0;
Break;
}
$this->idCon = $idCon;
Return $idCon;
}
/************************************************************************************
*关闭数据库连接
*************************************************************************************/
Function Close()
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_close($this->idCon);
Break;
Case "mysql":
$r = mysql_close($this->idCon);
Break;
Case "pg":
$r = pg_close($this->idCon);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*选择数据库
*************************************************************************************/
Function SelectDb($dbName)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_select_db($dbName);
Break;
Case "mysql":
$r = mysql_select_db($dbName);
Break;
Case "pg":
$r = False;
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*创建查询
*************************************************************************************/
Function Query($query)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_query($query, $this->idCon);
Break;
Case "mysql":
$r = mysql_query($query, $this->idCon);
Break;
Case "pg":
$r = pg_exec($this->idCon, $query);
Break;
Default:
$r = False;
Break;
}
$this->curRow[$r] = 0;
$this->seek[$r] = 0;
Return $r;
}
/************************************************************************************
*移动记录指针
*************************************************************************************/
Function DataSeek($result, $RowNumber)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_data_seek($result, $RowNumber);
Break;
Case "mysql":
$r = mysql_data_seek($result, $RowNumber);
Break;
Case "pg":
$r = False;
Break;
Default:
$r = False;
Break;
}
$this->seek[$result] = (int) $RowNumber;
Return $r;
}
/************************************************************************************
*获取字段名
*************************************************************************************/
Function FieldName($result, $offset)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_field_name($result, $offset);
Break;
Case "mysql":
$r = mysql_field_name($result, $offset);
Break;
Case "pg":
$r = pg_fieldname($result, $offset);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取字段类型
*************************************************************************************/
Function FieldType($result, $offset)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_field_type($result, $offset);
Break;
Case "mysql":
$r = mysql_field_type($result, $offset);
Break;
Case "pg":
$r = pg_fieldtype($result, $offset);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取字段长度
*************************************************************************************/
Function FieldLength($result, $offset)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_field_length($result, $offset);
Break;
Case "mysql":
$r = mysql_field_len($result, $offset);
Break;
Case "pg":
$r = pg_fieldsize($result, $offset);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取数据并保存到数组,可以用数字索引方式访问数组
*************************************************************************************/
Function FetchRow($result, $RowNumber = 0)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_fetch_row($result);
Break;
Case "mysql":
$r = mysql_fetch_row($result);
Break;
Case "pg":
$r = pg_fetch_row($result, $RowNumber);
If ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
Break;
Default:
$r = False;
Break;
}
Return $r;
}
 
/************************************************************************************
*获取数据并保存到数组,可以用数字索引和关联索引的方式访问
*************************************************************************************/
Function FetchArray($result, $RowNumber = 0, $ResultType = 2)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_fetch_array($result);
Break;
Case "mysql":
$r = mysql_fetch_array($result);
Break;
Case "pg":
$r = pg_fetch_array($result, $RowNumber, $ResultType);
If ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取数据并保存到对象
*************************************************************************************/
Function FetchObject($result, $RowNumber = 0, $ResultType = 2)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_fetch_object($result);
Break;
Case "mysql":
$r = mysql_fetch_object($result);
Break;
Case "pg":
$r = pg_fetch_object($result, $RowNumber, $ResultType);
If ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取结果数据
*************************************************************************************/
Function Result($result, $RowNumber, $FieldName)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_result($result, $RowNumber, $FieldName);
Break;
Case "mysql":
$r = mysql_result($result, $RowNumber, $FieldName);
Break;
Case "pg":
$r = pg_result($result, $RowNumber, $FieldName);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*释放结果数据
*************************************************************************************/
Function FreeResult($result)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_free_result($result);
Break;
Case "mysql":
$r = mysql_free_result($result);
Break;
Case "pg":
$r = pg_freeresult($result);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取记录数量
*************************************************************************************/
Function RowsNumber($result)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_num_rows($result);
Break;
Case "mysql":
$r = mysql_num_rows($result);
Break;
Case "pg":
$r = pg_numrows($result);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取字段数量
*************************************************************************************/
Function FieldsNumber($result)
{
Switch ($this->dbType) {
Case "mssql":
$r = mssql_num_fields($result);
Break;
Case "mysql":
$r = mysql_num_fields($result);
Break;
Case "pg":
$r = pg_numfields($result);
Break;
Default:
$r = False;
Break;
}
Return $r;
}
/************************************************************************************
*获取当前记录号(从0开始)
*************************************************************************************/
Function CurRecNumber($result)
{
$r = $this->curRow[$result];
Return $r;
}
/************************************************************************************
*获取当前行号(从1开始)
*************************************************************************************/
Function RecordNumber($result)
{
$cr = $this->CurRecNumber($result) + 1;
Return $cr;
}
/************************************************************************************
*移动到第一条记录
*************************************************************************************/
Function MoveFirstRec($result)
{
Switch ($this->dbType) {
Case "pg":
$r = $this->FetchRow($result, 0);
Break;
Default:
$rn = $this->DataSeek($result, 0);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} Else {
$r = False;
}
Break;
}
Return $r;
}
/************************************************************************************
*移动到最后一条记录
*************************************************************************************/
Function MoveLastRec($result)
{
$rs = $this->RowsNumber($result);
If ($rs) {
$rs--;
Switch ($this->dbType) {
Case "pg":
$r = $this->FetchRow($result, $rs);
Break;
Default:
$rn = $this->DataSeek($result, $rs);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} Else {
$r = False;
}
Break;
}
}
Return $r;
}
/************************************************************************************
*移动到前一条记录
*************************************************************************************/
Function MovePreviousRec($result)
{
$rs = $this->CurRecNumber($result);
If ($rs) {
$rs--;
Switch ($this->dbType) {
Case "pg":
$r = $this->FetchRow($result, $rs);
Break;
Default:
$rn = $this->DataSeek($result, $rs);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} Else {
$r = False;
}
Break;
}
}
Return $r;
}
/************************************************************************************
*移动到下一条记录
*************************************************************************************/
Function MoveNextRec($result)
{
$rs = $this->CurRecNumber($result);
$rn = $this->RowsNumber($result);
$rs++;
If ($rs != $rn) {
Switch ($this->dbType) {
Case "pg":
$r = $this->FetchRow($result, $rs);
Break;
Default:
$re = $this->FetchRow($result);
If ($re) {
$r = $re;
$this->curRow[$result]++;
$this->seek[$result] = $this->curRow[$result];
} Else {
$r = False;
}
Break;
}
}
Return $r;
}
/************************************************************************************
*移动到指定记录(编号从0开始)
*************************************************************************************/
Function MoveToRec($result, $RowNumber)
{
$rn = $this->RowsNumber($result);
If ($RowNumber > 0 And $RowNumber $RowNumber--;
Switch ($this->dbType) {
Case "pg":
$r = $this->FetchRow($result, $RowNumber);
Break;
Default:
$rn = $this->DataSeek($result, $RowNumber);
If ($rn) {
$r = $this->FetchRow($result);
If ($r) $this->curRow[$result] = $this->seek[$result];
} Else {
$r = False;
}
Break;
}
}
Return $r;
}
}
//********************************方法实现完毕****************************************//
?>

希望本文所述对大家的PHP数据库程序设计有所帮助。

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Jenseits des Hype: Beurteilung der Rolle von PHP heute heuteJenseits des Hype: Beurteilung der Rolle von PHP heute heuteApr 12, 2025 am 12:17 AM

PHP bleibt ein leistungsstarkes und weit verbreitetes Tool in der modernen Programmierung, insbesondere im Bereich der Webentwicklung. 1) PHP ist einfach zu bedienen und nahtlos in Datenbanken integriert und für viele Entwickler die erste Wahl. 2) Es unterstützt die Erzeugung der dynamischen Inhalte und die objektorientierte Programmierung, die für die schnelle Erstellung und Wartung von Websites geeignet sind. 3) Die Leistung von PHP kann verbessert werden, indem Datenbankabfragen zwischengespeichert und optimiert werden, und die umfangreiche Community und sein reiches Ökosystem machen es im heutigen Technologiestack immer noch wichtig.

Was sind schwache Referenzen in PHP und wann sind sie nützlich?Was sind schwache Referenzen in PHP und wann sind sie nützlich?Apr 12, 2025 am 12:13 AM

In PHP werden schwache Referenzen in der WeaPreference -Klasse implementiert und verhindern nicht, dass der Müllsammler Objekte zurückerobern. Schwache Referenzen eignen sich für Szenarien wie Caching -Systeme und Event -Hörer. Es ist zu beachten, dass es das Überleben von Objekten nicht garantieren kann und dass die Müllsammlung möglicherweise verzögert wird.

Erklären Sie die __invoke magische Methode in PHP.Erklären Sie die __invoke magische Methode in PHP.Apr 12, 2025 am 12:07 AM

Mit der \ _ \ _ -Invoke -Methode können Objekte wie Funktionen bezeichnet werden. 1. Definieren Sie die Methode \ _ \ _, damit das Objekt aufgerufen werden kann. 2. Bei Verwendung der Syntax $ OBJ (...) wird PHP die Methode \ _ \ _ aufrufen. 3.. Geeignet für Szenarien wie Protokollierung und Taschenrechner, Verbesserung der Codeflexibilität und Lesbarkeit.

Erklären Sie Fasern in PHP 8.1 für die Parallelität.Erklären Sie Fasern in PHP 8.1 für die Parallelität.Apr 12, 2025 am 12:05 AM

Fasern wurde in Php8.1 eingeführt, wodurch die gleichzeitigen Verarbeitungsfunktionen verbessert wurden. 1) Fasern ist ein leichtes Parallelitätsmodell, das Coroutinen ähnelt. 2) Sie ermöglichen es den Entwicklern, den Ausführungsfluss von Aufgaben manuell zu steuern, und eignen sich zum Umgang mit E/O-intensiven Aufgaben. 3) Die Verwendung von Fasern kann effizientere und reaktionsschnelle Code schreiben.

Die PHP -Community: Ressourcen, Unterstützung und EntwicklungDie PHP -Community: Ressourcen, Unterstützung und EntwicklungApr 12, 2025 am 12:04 AM

Die PHP -Community bietet umfangreiche Ressourcen und Unterstützung, um Entwicklern zu helfen, zu wachsen. 1) Zu den Ressourcen gehören offizielle Dokumentation, Tutorials, Blogs und Open -Source -Projekte wie Laravel und Symfony. 2) Die Unterstützung kann durch Stackoverflow-, Reddit- und Slack -Kanäle erhalten werden. 3) Entwicklungstrends können durch Befolgung von RFC gelernt werden. 4) Die Integration in die Community kann durch aktive Teilnahme, Beitrag zum Code und Lernfreigabe erreicht werden.

PHP vs. Python: Verständnis der UnterschiedePHP vs. Python: Verständnis der UnterschiedeApr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP: Stirbt es oder passt es sich einfach an?PHP: Stirbt es oder passt es sich einfach an?Apr 11, 2025 am 12:13 AM

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

Die Zukunft von PHP: Anpassungen und InnovationenDie Zukunft von PHP: Anpassungen und InnovationenApr 11, 2025 am 12:01 AM

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version