欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

分享一个PHP连接sql server的类

程序员文章站 2022-05-21 18:20:42
...

大家平常见的最多的是php连接mysql的类,今天给大家分享一个php连接sql server的类。 感兴趣的朋友可以参考下。

  1. class DB_Handle {

  2. var $ClassName = "DB_Handle";
  3. var $Server;
  4. var $UserName;
  5. var $Password;
  6. var $Database;
  7. var $LinkID = 0;
  8. var $QueryResult = "";
  9. var $LastInsertID = "";
  10. /* private ignore=>ignore the error and continue, halt=>report the error and halt, report=>report the error and continue */
  11. var $Halt_On_Error = "report";
  12. var $Error = "";
  13. var $ErrNo = 0;
  14. /**public
  15. * remark: This is the db_mysql_class's structure
  16. * function: Set the server,username,password,database variable.
  17. */
  18. function DB_Handle($server = "", $username = "", $password = "", $database = "") {
  19. $this->Server = $server;
  20. $this->UserName = $username;
  21. $this->Password = $password;
  22. $this->Database = $database;
  23. }
  24. /**public
  25. * function: Connect database and select database
  26. * success: retun 1
  27. * failed: return 0
  28. */
  29. function connect() {
  30. $this->LinkID = @mssql_pconnect ( $this->Server, $this->UserName, $this->Password );
  31. if (! $this->LinkID) {
  32. $this->halt ( "mssql_pconnect($this->Server,$this->UserName,$this->Password): Failed" );
  33. return 0;
  34. }
  35. if (! @mssql_select_db ( $this->Database )) {
  36. $this->halt ( "mssql_select_db($this->Database) Failed." );
  37. return 0;
  38. }
  39. return 1;
  40. }
  41. /**public
  42. * function: Check the database, if exist then select
  43. * exist: return 1
  44. * not exist: return 0
  45. */
  46. function selectDatabase() {
  47. if (@mssql_select_db ( $this->Database ))
  48. return 1;
  49. else
  50. return 0;
  51. }
  52. /**public
  53. * function: Execute SQL instruction
  54. * success: return SQL Result.
  55. * failed: return 0;
  56. */
  57. function execQuery($sql = "") {
  58. $this->connect();
  59. if ($this->LinkID == 0) {
  60. $this->halt ( "Execute SQL Failed: Have not valid database connect." );
  61. return 0;
  62. }
  63. ob_start ();
  64. $this->QueryResult = mssql_query ( $sql, $this->LinkID );
  65. $error = ob_get_contents ();
  66. ob_end_clean ();
  67. if ($error) {
  68. $this->halt ( "Execute SQL: mssql_query($sql,$this->LinkID) failed." );
  69. return 0;
  70. }
  71. $reg = "#insert into#";
  72. if (preg_match ( $reg, $sql )) {
  73. $sql = "select @@IDENTITY as id";
  74. $res = mssql_query ( $sql, $this->LinkID );
  75. $this->LastInsertID = mssql_result ( $res, 0, id );
  76. }
  77. return $this->QueryResult;
  78. }
  79. /**public
  80. * function: Get the query result's row number
  81. * success: return the row fo the Result
  82. * failed: return 0
  83. */
  84. function getTotalRowNum($result = "") {
  85. if ($result != "")
  86. $this->QueryResult = $result;
  87. $row = @mssql_num_rows ( $this->QueryResult );
  88. if ($row >= 0)
  89. return $row;
  90. $this->halt ( "Get a row of result Failed: Result $result is invalid." );
  91. return 0;
  92. }
  93. /**public
  94. * function: Get the last insert record's id
  95. * success: return id
  96. * failed: return 0
  97. */
  98. function lastInsertID() {
  99. return $this->LastInsertID;
  100. }
  101. /**public
  102. * function: Get a field's value
  103. * success: return value of the field
  104. * failed: return 0
  105. */
  106. function getField($result = "", $row = 0, $field = 0) {
  107. if ($result != "")
  108. $this->QueryResult = $result;
  109. $fieldvalue = @mssql_result ( $this->QueryResult, $row, $field );
  110. if ($fieldvalue != "")
  111. return $fieldvalue;
  112. $this->halt ( "Get field: mssql_result($this->QueryResult,$row,$field) failed." );
  113. return 0;
  114. //Here should have error handle
  115. }
  116. /**public
  117. * function: Get next record
  118. * success: return a array of the record's value
  119. * failed: return 0
  120. */
  121. function nextRecord($result = "") {
  122. if ($result != "")
  123. $this->QueryResult = $result;
  124. $record = @mssql_fetch_array ( $this->QueryResult );
  125. if (is_array ( $record ))
  126. return $record;
  127. //$this->halt("Get the next record Failed: the Result $result is invalid.");
  128. return 0;
  129. }
  130. /**public
  131. * function: Free the Query Result
  132. * success return 1
  133. * failed: return 0
  134. */
  135. function freeResult($result = "") {
  136. if ($result != "")
  137. $this->QueryResult = $result;
  138. return @mssql_free_result ( $this->QueryResult );
  139. }
  140. /**public
  141. * function: Set the Halt_On_Error's state
  142. * success: return 1
  143. * failed: return 0
  144. */
  145. function setHaltOnError($state = "ignore") {
  146. if (! ($state == "ignore" || $state == "report" || $state == "halt")) {
  147. $this->halt ( "Set the Halt_On_Error Fail: There is no state value $state" );
  148. return 0;
  149. }
  150. $this->Halt_On_Error = $state;
  151. return 1;
  152. }
  153. /**public
  154. * function: Get the Halt_On_Error's state
  155. */
  156. function getHaltOnError() {
  157. return $this->Halt_On_Error;
  158. }
  159. /**public
  160. * function: Get the class's name
  161. */
  162. function toString() {
  163. return $this->ClassName;
  164. }
  165. /**private
  166. * function: Error handle
  167. */
  168. function halt($msg) {
  169. $this->Error = @mysql_error ( $this->LinkID );
  170. $this->ErrNo = @mysql_errno ( $this->LinkID );
  171. if ($this->Halt_On_Error == "ignore")
  172. return;
  173. $this->makeMsg ( $msg );
  174. if ($this->Halt_On_Error == "halt")
  175. die ( "Session halted" );
  176. }
  177. /**private
  178. * function: Make error information and print
  179. */
  180. function makeMsg($msg) {
  181. printf ( "Database error: %s\n", $msg );
  182. printf ( "MySQL Error: %s (%s)\n", $this->ErrNo, $this->Error );
  183. }
  184. }
复制代码