VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • 强大的php数据库操作类,支持mysql,mssql,pg

下面我们来分享一下我珍藏的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. /***********************************成员变量定义***************************************/ 
  57. var $dbType; // 数据库类型: mssql, mysql, pg 
  58. var $connectType; // 连接类型: c - common connection, p - open persistent connection 
  59. var $idCon; // 连接号 
  60. var $curRow; // current row number of data from the result 
  61. // associated with the specified result identifier array 
  62. var $seek; // current row number of data from DataSeek function array 
  63.  
  64. /***********************************成员方法实现***************************************/ 
  65. /************************************************************************************ 
  66. *连接数据库的函数 
  67. *************************************************************************************/ 
  68. Function Open($dbType, $c, $connect, $username = "", $password = "") 
  69. { 
  70. $this->dbType = $dbType; 
  71. Switch ($dbType) { 
  72. Case "mssql": 
  73. If ($connectType == "c") { 
  74. $idCon = mssql_connect($connect, $username, $password); 
  75. } Else { 
  76. $idCon = mssql_pconnect($connect, $username, $password); 
  77. } 
  78. Break; 
  79. Case "mysql": 
  80. If ($connectType == "c") { 
  81. $idCon = mysql_connect($connect, $username, $password); 
  82. } Else { 
  83. $idCon = mysql_pconnect($connect, $username, $password); 
  84. } 
  85. Break; 
  86. Case "pg": 
  87. If ($connectType == "c") { 
  88. $idCon = pg_connect($connect . " user=" . $username . " password=" . $password); 
  89. } Else { 
  90. $idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password); 
  91. } 
  92. Break; 
  93. Default: 
  94. $idCon = 0; 
  95. Break; 
  96. } 
  97. $this->idCon = $idCon; 
  98. Return $idCon; 
  99. } 
  100. /************************************************************************************ 
  101. *关闭数据库连接 
  102. *************************************************************************************/ 
  103. Function Close() 
  104. { 
  105. Switch ($this->dbType) { 
  106. Case "mssql": 
  107. $r = mssql_close($this->idCon); 
  108. Break; 
  109. Case "mysql": 
  110. $r = mysql_close($this->idCon); 
  111. Break; 
  112. Case "pg": 
  113. $r = pg_close($this->idCon); 
  114. Break; 
  115. Default: 
  116. $r = False; 
  117. Break; 
  118. } 
  119. Return $r; 
  120. } 
  121. /************************************************************************************ 
  122. *选择数据库 
  123. *************************************************************************************/ 
  124. Function SelectDb($dbName) 
  125. { 
  126. Switch ($this->dbType) { 
  127. Case "mssql": 
  128. $r = mssql_select_db($dbName); 
  129. Break; 
  130. Case "mysql": 
  131. $r = mysql_select_db($dbName); 
  132. Break; 
  133. Case "pg": 
  134. $r = False; 
  135. Break; 
  136. Default: 
  137. $r = False; 
  138. Break; 
  139. } 
  140. Return $r; 
  141. } 
  142. /************************************************************************************ 
  143. *创建查询 
  144. *************************************************************************************/ 
  145. Function Query($query) 
  146. { 
  147. Switch ($this->dbType) { 
  148. Case "mssql": 
  149. $r = mssql_query($query, $this->idCon); 
  150. Break; 
  151. Case "mysql": 
  152. $r = mysql_query($query, $this->idCon); 
  153. Break; 
  154. Case "pg": 
  155. $r = pg_exec($this->idCon, $query); 
  156. Break; 
  157. Default: 
  158. $r = False; 
  159. Break; 
  160. } 
  161. $this->curRow[$r] = 0; 
  162. $this->seek[$r] = 0; 
  163. Return $r; 
  164. } 
  165. /************************************************************************************ 
  166. *移动记录指针 
  167. *************************************************************************************/ 
  168. Function DataSeek($result, $RowNumber) 
  169. { 
  170. Switch ($this->dbType) { 
  171. Case "mssql": 
  172. $r = mssql_data_seek($result, $RowNumber); 
  173. Break; 
  174. Case "mysql": 
  175. $r = mysql_data_seek($result, $RowNumber); 
  176. Break; 
  177. Case "pg": 
  178. $r = False; 
  179. Break; 
  180. Default: 
  181. $r = False; 
  182. Break; 
  183. } 
  184. $this->seek[$result] = (int) $RowNumber; 
  185. Return $r; 
  186. } 
  187. /************************************************************************************ 
  188. *获取字段名 
  189. *************************************************************************************/ 
  190. Function FieldName($result, $offset) 
  191. { 
  192. Switch ($this->dbType) { 
  193. Case "mssql": 
  194. $r = mssql_field_name($result, $offset); 
  195. Break; 
  196. Case "mysql": 
  197. $r = mysql_field_name($result, $offset); 
  198. Break; 
  199. Case "pg": 
  200. $r = pg_fieldname($result, $offset); 
  201. Break; 
  202. Default: 
  203. $r = False; 
  204. Break; 
  205. } 
  206. Return $r; 
  207. } 
  208. /************************************************************************************ 
  209. *获取字段类型 
  210. *************************************************************************************/ 
  211. Function FieldType($result, $offset) 
  212. { 
  213. Switch ($this->dbType) { 
  214. Case "mssql": 
  215. $r = mssql_field_type($result, $offset); 
  216. Break; 
  217. Case "mysql": 
  218. $r = mysql_field_type($result, $offset); 
  219. Break; 
  220. Case "pg": 
  221. $r = pg_fieldtype($result, $offset); 
  222. Break; 
  223. Default: 
  224. $r = False; 
  225. Break; 
  226. } 
  227. Return $r; 
  228. } 
  229. /************************************************************************************ 
  230. *获取字段长度 
  231. *************************************************************************************/ 
  232. Function FieldLength($result, $offset) 
  233. { 
  234. Switch ($this->dbType) { 
  235. Case "mssql": 
  236. $r = mssql_field_length($result, $offset); 
  237. Break; 
  238. Case "mysql": 
  239. $r = mysql_field_len($result, $offset); 
  240. Break; 
  241. Case "pg": 
  242. $r = pg_fieldsize($result, $offset); 
  243. Break; 
  244. Default: 
  245. $r = False; 
  246. Break; 
  247. } 
  248. Return $r; 
  249. } 
  250. /************************************************************************************ 
  251. *获取数据并保存到数组,可以用数字索引方式访问数组 
  252. *************************************************************************************/ 
  253. Function FetchRow($result, $RowNumber = 0) 
  254. { 
  255. Switch ($this->dbType) { 
  256. Case "mssql": 
  257. $r = mssql_fetch_row($result); 
  258. Break; 
  259. Case "mysql": 
  260. $r = mysql_fetch_row($result); 
  261. Break; 
  262. Case "pg": 
  263. $r = pg_fetch_row($result, $RowNumber); 
  264. If ($r) { 
  265. $this->curRow[$result] = $RowNumber; 
  266. $this->seek[$result] = $RowNumber; 
  267. } 
  268. Break; 
  269. Default: 
  270. $r = False; 
  271. Break; 
  272. } 
  273. Return $r; 
  274. } 
  275.  
  276. /************************************************************************************ 
  277. *获取数据并保存到数组,可以用数字索引和关联索引的方式访问 
  278. *************************************************************************************/ 
  279. Function FetchArray($result, $RowNumber = 0, $ResultType = 2) 
  280. { 
  281. Switch ($this->dbType) { 
  282. Case "mssql": 
  283. $r = mssql_fetch_array($result); 
  284. Break; 
  285. Case "mysql": 
  286. $r = mysql_fetch_array($result); 
  287. Break; 
  288. Case "pg": 
  289. $r = pg_fetch_array($result, $RowNumber, $ResultType); 
  290. If ($r) { 
  291. $this->curRow[$result] = $RowNumber; 
  292. $this->seek[$result] = $RowNumber; 
  293. } 
  294. Break; 
  295. Default: 
  296. $r = False; 
  297. Break; 
  298. } 
  299. Return $r; 
  300. } 
  301. /************************************************************************************ 
  302. *获取数据并保存到对象 
  303. *************************************************************************************/ 
  304. Function FetchObject($result, $RowNumber = 0, $ResultType = 2) 
  305. { 
  306. Switch ($this->dbType) { 
  307. Case "mssql": 
  308. $r = mssql_fetch_object($result); 
  309. Break; 
  310. Case "mysql": 
  311. $r = mysql_fetch_object($result); 
  312. Break; 
  313. Case "pg": 
  314. $r = pg_fetch_object($result, $RowNumber, $ResultType); 
  315. If ($r) { 
  316. $this->curRow[$result] = $RowNumber; 
  317. $this->seek[$result] = $RowNumber; 
  318. } 
  319. Break; 
  320. Default: 
  321. $r = False; 
  322. Break; 
  323. } 
  324. Return $r; 
  325. } 
  326. /************************************************************************************ 
  327. *获取结果数据 
  328. *************************************************************************************/ 
  329. Function Result($result, $RowNumber, $FieldName) 
  330. { 
  331. Switch ($this->dbType) { 
  332. Case "mssql": 
  333. $r = mssql_result($result, $RowNumber, $FieldName); 
  334. Break; 
  335. Case "mysql": 
  336. $r = mysql_result($result, $RowNumber, $FieldName); 
  337. Break; 
  338. Case "pg": 
  339. $r = pg_result($result, $RowNumber, $FieldName); 
  340. Break; 
  341. Default: 
  342. $r = False; 
  343. Break; 
  344. } 
  345. Return $r; 
  346. } 
  347. /************************************************************************************ 
  348. *释放结果数据 
  349. *************************************************************************************/ 
  350. Function FreeResult($result) 
  351. { 
  352. Switch ($this->dbType) { 
  353. Case "mssql": 
  354. $r = mssql_free_result($result); 
  355. Break; 
  356. Case "mysql": 
  357. $r = mysql_free_result($result); 
  358. Break; 
  359. Case "pg": 
  360. $r = pg_freeresult($result); 
  361. Break; 
  362. Default: 
  363. $r = False; 
  364. Break; 
  365. } 
  366. Return $r; 
  367. } 
  368. /************************************************************************************ 
  369. *获取记录数量 
  370. *************************************************************************************/ 
  371. Function RowsNumber($result) 
  372. { 
  373. Switch ($this->dbType) { 
  374. Case "mssql": 
  375. $r = mssql_num_rows($result); 
  376. Break; 
  377. Case "mysql": 
  378. $r = mysql_num_rows($result); 
  379. Break; 
  380. Case "pg": 
  381. $r = pg_numrows($result); 
  382. Break; 
  383. Default: 
  384. $r = False; 
  385. Break; 
  386. } 
  387. Return $r; 
  388. } 
  389. /************************************************************************************ 
  390. *获取字段数量 
  391. *************************************************************************************/ 
  392. Function FieldsNumber($result) 
  393. { 
  394. Switch ($this->dbType) { 
  395. Case "mssql": 
  396. $r = mssql_num_fields($result); 
  397. Break; 
  398. Case "mysql": 
  399. $r = mysql_num_fields($result); 
  400. Break; 
  401. Case "pg": 
  402. $r = pg_numfields($result); 
  403. Break; 
  404. Default: 
  405. $r = False; 
  406. Break; 
  407. } 
  408. Return $r; 
  409. } 
  410. /************************************************************************************ 
  411. *获取当前记录号(从0开始) 
  412. *************************************************************************************/ 
  413. Function CurRecNumber($result) 
  414. {  //开源软件:phpfensi.com 
  415. $r = $this->curRow[$result]; 
  416. Return $r; 
  417. } 
  418. /************************************************************************************ 
  419. *获取当前行号(从1开始) 
  420. *************************************************************************************/ 
  421. Function RecordNumber($result) 
  422. { 
  423. $cr = $this->CurRecNumber($result) + 1; 
  424. Return $cr; 
  425. } 
  426. /************************************************************************************ 
  427. *移动到第一条记录 
  428. *************************************************************************************/ 
  429. Function MoveFirstRec($result) 
  430. { 
  431. Switch ($this->dbType) { 
  432. Case "pg": 
  433. $r = $this->FetchRow($result, 0); 
  434. Break; 
  435. Default: 
  436. $rn = $this->DataSeek($result, 0); 
  437. If ($rn) { 
  438. $r = $this->FetchRow($result); 
  439. If ($r) $this->curRow[$result] = $this->seek[$result]; 
  440. } Else { 
  441. $r = False; 
  442. } 
  443. Break; 
  444. } 
  445. Return $r; 
  446. } 
  447. /************************************************************************************ 
  448. *移动到最后一条记录 
  449. *************************************************************************************/ 
  450. Function MoveLastRec($result) 
  451. { 
  452. $rs = $this->RowsNumber($result); 
  453. If ($rs) { 
  454. $rs--; 
  455. Switch ($this->dbType) { 
  456. Case "pg": 
  457. $r = $this->FetchRow($result, $rs); 
  458. Break; 
  459. Default: 
  460. $rn = $this->DataSeek($result, $rs); 
  461. If ($rn) { 
  462. $r = $this->FetchRow($result); 
  463. If ($r) $this->curRow[$result] = $this->seek[$result]; 
  464. } Else { 
  465. $r = False; 
  466. } 
  467. Break; 
  468. } 
  469. } 
  470. Return $r; 
  471. } 
  472. /************************************************************************************ 
  473. *移动到前一条记录 
  474. *************************************************************************************/ 
  475. Function MovePreviousRec($result) 
  476. { 
  477. $rs = $this->CurRecNumber($result); 
  478. If ($rs) { 
  479. $rs--; 
  480. Switch ($this->dbType) { 
  481. Case "pg": 
  482. $r = $this->FetchRow($result, $rs); 
  483. Break; 
  484. Default: 
  485. $rn = $this->DataSeek($result, $rs); 
  486. If ($rn) { 
  487. $r = $this->FetchRow($result); 
  488. If ($r) $this->curRow[$result] = $this->seek[$result]; 
  489. } Else { 
  490. $r = False; 
  491. } 
  492. Break; 
  493. } 
  494. } 
  495. Return $r; 
  496. } 
  497. /************************************************************************************ 
  498. *移动到下一条记录 
  499. *************************************************************************************/ 
  500. Function MoveNextRec($result) 
  501. { 
  502. $rs = $this->CurRecNumber($result); 
  503. $rn = $this->RowsNumber($result); 
  504. $rs++; 
  505. If ($rs != $rn) { 
  506. Switch ($this->dbType) { 
  507. Case "pg": 
  508. $r = $this->FetchRow($result, $rs); 
  509. Break; 
  510. Default: 
  511. $re = $this->FetchRow($result); 
  512. If ($re) { 
  513. $r = $re; 
  514. $this->curRow[$result]++; 
  515. $this->seek[$result] = $this->curRow[$result]; 
  516. } Else { 
  517. $r = False; 
  518. } 
  519. Break; 
  520. } 
  521. } 
  522. Return $r; 
  523. } 
  524. /************************************************************************************ 
  525. *移动到指定记录(编号从0开始) 
  526. *************************************************************************************/ 
  527. Function MoveToRec($result, $RowNumber) 
  528. { 
  529. $rn = $this->RowsNumber($result); 
  530. If ($RowNumber > 0 And $RowNumber < $rn) { 
  531. $RowNumber--; 
  532. Switch ($this->dbType) { 
  533. Case "pg": 
  534. $r = $this->FetchRow($result, $RowNumber); 
  535. Break; 
  536. Default: 
  537. $rn = $this->DataSeek($result, $RowNumber); 
  538. If ($rn) { 
  539. $r = $this->FetchRow($result); 
  540. If ($r) $this->curRow[$result] = $this->seek[$result]; 
  541. } Else { 
  542. $r = False; 
  543. } 
  544. Break; 
  545. } 
  546. } 
  547. Return $r; 
  548. } 
  549. } 
  550. //********************************方法实现完毕****************************************// 
  551. ?> 

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

 

出处:http://www.phpfensi.com/php/20150415/9313.html


相关教程