当前位置:首页 > PHP教程 > php类库 > 列表

强大的php数据库操作类,支持mysql,mssql,pg

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-15 15:07:07 浏览: 评论:0 

下面我们来分享一下我珍藏的php数据库操作类,他的强大之处是可支持mysql,mssql,pg三大主流数据库,你只要修改一下数据库的类型就可以直接应用.

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

函数清单,索引:

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

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

  1. <?PHP 
  2. /********************************************************************************** 
  3. 此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg 
  4. ************************************************************************************ 
  5. // -函数清单 索引: 
  6. // - Open: 打开数据库连接 Line:71 
  7. // - Close: 关闭数据库连接 Line:107 
  8. // - SelectDB: 选择数据库 Line:129 
  9. // - Query: 创建查询 Line:151 
  10. // - DataSeek: 移动记录指针 Line:175 
  11. // - FieldName: 获取字段名称 Line:198 
  12. // - FieldType: 获取字段类型 Line:220 
  13. // - FieldLenght: 获取字段长度 Line:242 
  14. // - FetchRow: 获取数据并保存到数组(数字索引) Line:264 
  15. // - FetchArray: 获取数据并保存进数组(数字和关联) Line:289 
  16. // - FetchObject: 获取数据并保存到对象(对象方式) Line:315 
  17. // - Result: 获取结果数据 Line:341 
  18. // - FreeResult: 刷新记录集 Line:363 
  19. // - RowsNumber: 获取记录数量 Line:385 
  20. // - FieldsNumber: 获取字段数量 Line:407 
  21. // - CurRecNumber: 获取当前记录号(从0开始) Line:429 
  22. // - RecordNumber: 获取当前行号(从1开始) Line:438 
  23. // - MoveFirstRec: 移动到第一条记录 Line:447 
  24. // - MoveLastRec: 移动到最后一条记录 Line:469 
  25. // - MovePreviousRec: 移动到前一条记录 Line:495 
  26. // - MoveNextRec: 移动到下一条记录 Line:521 
  27. // - MoveToRec: 移动到一个特定的记录(从1开始) Line:548 
  28. ************************************************************************************ 
  29. //Inputs: 
  30. // - dbType: databases type: mssql, mysql, pg 
  31. // - connectType: connection type: c - common connection, 
  32. // p - open persistent connection 
  33. // - connect: for MS SQL Server - server name, 
  34. // for MySQL - hostname [:port] [:/path/to/socket] , 
  35. // for PostgreSQL - host, port, tty, options, 
  36. // dbname (without username and password) 
  37. // - username 
  38. // - password 
  39. // - dbName: database name 
  40. // - query: SQL query 
  41. // - result: result set identifier 
  42. // - RowNumber: 
  43. // - offset: field identifier 
  44. // - ResultType: a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH 
  45. // - FieldName 
  46. // 
  47. //Returns: 
  48. // - result: result set identifier 
  49. // - connect link identifier 
  50. // - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber) 
  51. // - number of fields in the specified result set 
  52. // - number of rows in the specified result set 
  53. *************************************************************************************/ 
  54. Class mDatabase 
  55. /***********************************成员变量定义***************************************/ 
  56. var $dbType// 数据库类型: mssql, mysql, pg 
  57. var $connectType// 连接类型: c - common connection, p - open persistent connection 
  58. var $idCon// 连接号 
  59. var $curRow// current row number of data from the result 
  60. // associated with the specified result identifier array 
  61. var $seek// current row number of data from DataSeek function array 
  62.  
  63. /***********************************成员方法实现***************************************/ 
  64. /************************************************************************************ 
  65. *连接数据库的函数 
  66. *************************************************************************************/ 
  67. Function Open($dbType$c$connect$username = ""$password = ""
  68. $this->dbType = $dbType
  69. Switch ($dbType) { 
  70. Case "mssql"
  71. If ($connectType == "c") { 
  72. $idCon = mssql_connect($connect$username$password); 
  73. } Else { 
  74. $idCon = mssql_pconnect($connect$username$password); 
  75. Break; 
  76. Case "mysql"
  77. If ($connectType == "c") { 
  78. $idCon = mysql_connect($connect$username$password); 
  79. } Else { 
  80. $idCon = mysql_pconnect($connect$username$password); 
  81. Break; 
  82. Case "pg"
  83. If ($connectType == "c") { 
  84. $idCon = pg_connect($connect . " user=" . $username . " password=" . $password); 
  85. } Else { 
  86. $idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password); 
  87. Break; 
  88. Default: 
  89. $idCon = 0; 
  90. Break; 
  91. $this->idCon = $idCon
  92. Return $idCon
  93. /************************************************************************************ 
  94. *关闭数据库连接 
  95. *************************************************************************************/ 
  96. Function Close() 
  97. Switch ($this->dbType) { 
  98. Case "mssql"
  99. $r = mssql_close($this->idCon); 
  100. Break; 
  101. Case "mysql"
  102. $r = mysql_close($this->idCon); 
  103. Break; 
  104. Case "pg"
  105. $r = pg_close($this->idCon); 
  106. Break; 
  107. Default: 
  108. $r = False; 
  109. Break; 
  110. Return $r
  111. /************************************************************************************ 
  112. *选择数据库 
  113. *************************************************************************************/ 
  114. Function SelectDb($dbName
  115. Switch ($this->dbType) { 
  116. Case "mssql"
  117. $r = mssql_select_db($dbName); 
  118. Break; 
  119. Case "mysql"
  120. $r = mysql_select_db($dbName); 
  121. Break; 
  122. Case "pg"
  123. $r = False; 
  124. Break; 
  125. Default: 
  126. $r = False; 
  127. Break; 
  128. Return $r
  129. /************************************************************************************ 
  130. *创建查询 
  131. *************************************************************************************/ 
  132. Function Query($query
  133. Switch ($this->dbType) { 
  134. Case "mssql"
  135. $r = mssql_query($query$this->idCon); 
  136. Break; 
  137. Case "mysql"
  138. $r = mysql_query($query$this->idCon); 
  139. Break; 
  140. Case "pg"
  141. $r = pg_exec($this->idCon, $query); 
  142. Break; 
  143. Default: 
  144. $r = False; 
  145. Break; 
  146. $this->curRow[$r] = 0; 
  147. $this->seek[$r] = 0; 
  148. Return $r
  149. /************************************************************************************ 
  150. *移动记录指针 
  151. *************************************************************************************/ 
  152. Function DataSeek($result$RowNumber
  153. Switch ($this->dbType) { 
  154. Case "mssql"
  155. $r = mssql_data_seek($result$RowNumber); 
  156. Break; 
  157. Case "mysql"
  158. $r = mysql_data_seek($result$RowNumber); 
  159. Break; 
  160. Case "pg"
  161. $r = False; 
  162. Break; 
  163. Default: 
  164. $r = False; 
  165. Break; 
  166. $this->seek[$result] = (int) $RowNumber
  167. Return $r
  168. /************************************************************************************ 
  169. *获取字段名 
  170. *************************************************************************************/ 
  171. Function FieldName($result$offset
  172. Switch ($this->dbType) { 
  173. Case "mssql"
  174. $r = mssql_field_name($result$offset); 
  175. Break; 
  176. Case "mysql"
  177. $r = mysql_field_name($result$offset); 
  178. Break; 
  179. Case "pg"
  180. $r = pg_fieldname($result$offset); 
  181. Break; 
  182. Default: 
  183. $r = False; 
  184. Break; 
  185. Return $r
  186. /************************************************************************************ 
  187. *获取字段类型 
  188. *************************************************************************************/ 
  189. Function FieldType($result$offset
  190. Switch ($this->dbType) { 
  191. Case "mssql"
  192. $r = mssql_field_type($result$offset); 
  193. Break; 
  194. Case "mysql"
  195. $r = mysql_field_type($result$offset); 
  196. Break; 
  197. Case "pg"
  198. $r = pg_fieldtype($result$offset); 
  199. Break; 
  200. Default: 
  201. $r = False; 
  202. Break; 
  203. Return $r
  204. /************************************************************************************ 
  205. *获取字段长度 
  206. *************************************************************************************/ 
  207. Function FieldLength($result$offset
  208. Switch ($this->dbType) { 
  209. Case "mssql"
  210. $r = mssql_field_length($result$offset); 
  211. Break; 
  212. Case "mysql"
  213. $r = mysql_field_len($result$offset); 
  214. Break; 
  215. Case "pg"
  216. $r = pg_fieldsize($result$offset); 
  217. Break; 
  218. Default: 
  219. $r = False; 
  220. Break; 
  221. Return $r
  222. /************************************************************************************ 
  223. *获取数据并保存到数组,可以用数字索引方式访问数组 
  224. *************************************************************************************/ 
  225. Function FetchRow($result$RowNumber = 0) 
  226. Switch ($this->dbType) { 
  227. Case "mssql"
  228. $r = mssql_fetch_row($result); 
  229. Break; 
  230. Case "mysql"
  231. $r = mysql_fetch_row($result); 
  232. Break; 
  233. Case "pg"
  234. $r = pg_fetch_row($result$RowNumber); 
  235. If ($r) { 
  236. $this->curRow[$result] = $RowNumber
  237. $this->seek[$result] = $RowNumber
  238. Break; 
  239. Default: 
  240. $r = False; 
  241. Break; 
  242. Return $r
  243.  
  244. /************************************************************************************ 
  245. *获取数据并保存到数组,可以用数字索引和关联索引的方式访问 
  246. *************************************************************************************/ 
  247. Function FetchArray($result$RowNumber = 0, $ResultType = 2) 
  248. Switch ($this->dbType) { 
  249. Case "mssql"
  250. $r = mssql_fetch_array($result); 
  251. Break; 
  252. Case "mysql"
  253. $r = mysql_fetch_array($result); 
  254. Break; 
  255. Case "pg"
  256. $r = pg_fetch_array($result$RowNumber$ResultType); 
  257. If ($r) { 
  258. $this->curRow[$result] = $RowNumber
  259. $this->seek[$result] = $RowNumber
  260. Break; 
  261. Default: 
  262. $r = False; 
  263. Break; 
  264. Return $r
  265. /************************************************************************************ 
  266. *获取数据并保存到对象 
  267. *************************************************************************************/ 
  268. Function FetchObject($result$RowNumber = 0, $ResultType = 2) 
  269. Switch ($this->dbType) { 
  270. Case "mssql"
  271. $r = mssql_fetch_object($result); 
  272. Break; 
  273. Case "mysql"
  274. $r = mysql_fetch_object($result); 
  275. Break; 
  276. Case "pg"
  277. $r = pg_fetch_object($result$RowNumber$ResultType); 
  278. If ($r) { 
  279. $this->curRow[$result] = $RowNumber
  280. $this->seek[$result] = $RowNumber
  281. Break; 
  282. Default: 
  283. $r = False; 
  284. Break; 
  285. Return $r
  286. /************************************************************************************ 
  287. *获取结果数据 
  288. *************************************************************************************/ 
  289. Function Result($result$RowNumber$FieldName
  290. Switch ($this->dbType) { 
  291. Case "mssql"
  292. $r = mssql_result($result$RowNumber$FieldName); 
  293. Break; 
  294. Case "mysql"
  295. $r = mysql_result($result$RowNumber$FieldName); 
  296. Break; 
  297. Case "pg"
  298. $r = pg_result($result$RowNumber$FieldName); 
  299. Break; 
  300. Default: 
  301. $r = False; 
  302. Break; 
  303. Return $r
  304. /************************************************************************************ 
  305. *释放结果数据 
  306. *************************************************************************************/ 
  307. Function FreeResult($result
  308. Switch ($this->dbType) { 
  309. Case "mssql"
  310. $r = mssql_free_result($result); 
  311. Break; 
  312. Case "mysql"
  313. $r = mysql_free_result($result); 
  314. Break; 
  315. Case "pg"
  316. $r = pg_freeresult($result); 
  317. Break; 
  318. Default: 
  319. $r = False; 
  320. Break; 
  321. Return $r
  322. /************************************************************************************ 
  323. *获取记录数量 
  324. *************************************************************************************/ 
  325. Function RowsNumber($result
  326. Switch ($this->dbType) { 
  327. Case "mssql"
  328. $r = mssql_num_rows($result); 
  329. Break; 
  330. Case "mysql"
  331. $r = mysql_num_rows($result); 
  332. Break; 
  333. Case "pg"
  334. $r = pg_numrows($result); 
  335. Break; 
  336. Default: 
  337. $r = False; 
  338. Break; 
  339. Return $r
  340. /************************************************************************************ 
  341. *获取字段数量 
  342. *************************************************************************************/ 
  343. Function FieldsNumber($result
  344. Switch ($this->dbType) { 
  345. Case "mssql"
  346. $r = mssql_num_fields($result); 
  347. Break; 
  348. Case "mysql"
  349. $r = mysql_num_fields($result); 
  350. Break; 
  351. Case "pg"
  352. $r = pg_numfields($result); 
  353. Break; 
  354. Default: 
  355. $r = False; 
  356. Break; 
  357. Return $r
  358. /************************************************************************************ 
  359. *获取当前记录号(从0开始) 
  360. *************************************************************************************/ 
  361. Function CurRecNumber($result
  362. {  //开源软件:phpfensi.com 
  363. $r = $this->curRow[$result]; 
  364. Return $r
  365. /************************************************************************************ 
  366. *获取当前行号(从1开始) 
  367. *************************************************************************************/ 
  368. Function RecordNumber($result
  369. $cr = $this->CurRecNumber($result) + 1; 
  370. Return $cr
  371. /************************************************************************************ 
  372. *移动到第一条记录 
  373. *************************************************************************************/ 
  374. Function MoveFirstRec($result
  375. Switch ($this->dbType) { 
  376. Case "pg"
  377. $r = $this->FetchRow($result, 0); 
  378. Break; 
  379. Default: 
  380. $rn = $this->DataSeek($result, 0); 
  381. If ($rn) { 
  382. $r = $this->FetchRow($result); 
  383. If ($r$this->curRow[$result] = $this->seek[$result]; 
  384. } Else { 
  385. $r = False; 
  386. Break; 
  387. Return $r
  388. /************************************************************************************ 
  389. *移动到最后一条记录 
  390. *************************************************************************************/ 
  391. Function MoveLastRec($result
  392. $rs = $this->RowsNumber($result); 
  393. If ($rs) { 
  394. $rs--; 
  395. Switch ($this->dbType) { 
  396. Case "pg"
  397. $r = $this->FetchRow($result$rs); 
  398. Break; 
  399. Default: 
  400. $rn = $this->DataSeek($result$rs); 
  401. If ($rn) { 
  402. $r = $this->FetchRow($result); 
  403. If ($r$this->curRow[$result] = $this->seek[$result]; 
  404. } Else { 
  405. $r = False; 
  406. Break; 
  407. Return $r
  408. /************************************************************************************ 
  409. *移动到前一条记录 
  410. *************************************************************************************/ 
  411. Function MovePreviousRec($result
  412. $rs = $this->CurRecNumber($result); 
  413. If ($rs) { 
  414. $rs--; 
  415. Switch ($this->dbType) { 
  416. Case "pg"
  417. $r = $this->FetchRow($result$rs); 
  418. Break; 
  419. Default: 
  420. $rn = $this->DataSeek($result$rs); 
  421. If ($rn) { 
  422. $r = $this->FetchRow($result); 
  423. If ($r$this->curRow[$result] = $this->seek[$result]; 
  424. } Else { 
  425. $r = False; 
  426. Break; 
  427. Return $r
  428. /************************************************************************************ 
  429. *移动到下一条记录 
  430. *************************************************************************************/ 
  431. Function MoveNextRec($result
  432. $rs = $this->CurRecNumber($result); 
  433. $rn = $this->RowsNumber($result); 
  434. $rs++; 
  435. If ($rs != $rn) { 
  436. Switch ($this->dbType) { 
  437. Case "pg"
  438. $r = $this->FetchRow($result$rs); 
  439. Break; 
  440. Default: 
  441. $re = $this->FetchRow($result); 
  442. If ($re) { 
  443. $r = $re
  444. $this->curRow[$result]++; 
  445. $this->seek[$result] = $this->curRow[$result]; 
  446. } Else { 
  447. $r = False; 
  448. Break; 
  449. Return $r
  450. /************************************************************************************ 
  451. *移动到指定记录(编号从0开始) 
  452. *************************************************************************************/ 
  453. Function MoveToRec($result$RowNumber
  454. $rn = $this->RowsNumber($result); 
  455. If ($RowNumber > 0 And $RowNumber < $rn) { 
  456. $RowNumber--; 
  457. Switch ($this->dbType) { 
  458. Case "pg"
  459. $r = $this->FetchRow($result$RowNumber); 
  460. Break; 
  461. Default: 
  462. $rn = $this->DataSeek($result$RowNumber); 
  463. If ($rn) { 
  464. $r = $this->FetchRow($result); 
  465. If ($r$this->curRow[$result] = $this->seek[$result]; 
  466. } Else { 
  467. $r = False; 
  468. Break; 
  469. Return $r
  470. //********************************方法实现完毕****************************************// 
  471. ?> 

我没有骗你吧,真的是我见过最强大的php数据库操作类.

Tags: php数据库操作类 mysql mssql

分享到: