当前位置:   article > 正文

php连接sql server

php连接sql server

php连接sqlserver有三种方式

一:odbc连接,废话不多说直接上代码,封装了一个单例

  1. <?php
  2. /**
  3. * odbcServer.php
  4. * Author: Erekys
  5. */
  6. namespace App\Model;
  7. class odbcServer{
  8. public static $server;
  9. public static $username;
  10. public static $password;
  11. public static $database;
  12. // 静态私有变量,保存类的唯一实例
  13. private static $instance = null;
  14. public function __construct () {
  15. $this->server = server;
  16. $this->username = username;
  17. $this->database = database;
  18. $this->password = password;
  19. }
  20. // 私有克隆方法,防止外部克隆
  21. private function __clone()
  22. {
  23. }
  24. // 私有反序列化方法,防止外部反序列化
  25. private function __wakeup()
  26. {
  27. }
  28. // 静态公有方法,用于获取类的唯一实例
  29. public static function getInstance()
  30. {
  31. if (self::$instance === null) {
  32. self::$instance = new self();
  33. }
  34. return self::$instance;
  35. }
  36. /**
  37. * db_con
  38. *
  39. * 创建SqlServer连接
  40. */
  41. public function db_con()
  42. {
  43. $server = $this->server;
  44. $username = $this->username; //数据库用户名
  45. $password = $this->password; //数据库密码
  46. $database = $this->database; //数据库
  47. @header("Content-Type:text/html;charset=GB18030");
  48. try {
  49. // DSN 是 Data Source Name 的缩写,指定连接数据源的名称
  50. $dsn = "Driver={SQL Server};Server=192.168.0.106;Database=QHXJXdata;";
  51. // 使用 odbc_connect() 函数建立连接
  52. $conn = odbc_connect($dsn, 'sa', 'lhq119LHQ');
  53. return $conn;
  54. }catch (Exception $e) {
  55. echo "异常信息:", $e->getMessage();
  56. }
  57. }
  58. /**
  59. * db_query
  60. * 执行select语句,返回二维数组。
  61. */
  62. public function db_query($sql, $fieldcount)
  63. {
  64. $con = db_con();
  65. if (is_null($con))
  66. return null;
  67. $sql=iconv('UTF-8','GBK',$sql);
  68. $rs = odbc_exec($con, $sql);
  69. if( $rs === false) {
  70. //echo 'sql error : ' . $sql;
  71. //exit;
  72. }
  73. $table = [];
  74. if( $rs === false || odbc_num_rows($rs) == 0 ) {
  75. return $table;
  76. }
  77. while (odbc_fetch_row($rs)) {
  78. $row = [];
  79. $n = 0;
  80. while( $n < $fieldcount ) {
  81. $row[] = odbc_result($rs, ++$n);
  82. }
  83. $table[] = $row;
  84. }
  85. if( count($table) > 0 ) {
  86. odbc_free_result($rs);
  87. }
  88. odbc_close($con);
  89. return $table;
  90. }
  91. /**
  92. * odbc_exec
  93. * 执行insert,update或delete语句。
  94. * 如果执行不成功,调整一下数据库参数和odbc_connect参数。
  95. */
  96. public function db_exec($sql)
  97. {
  98. $con = db_con();
  99. if (is_null($con))
  100. return null;
  101. $dat = odbc_exec($con, $sql);
  102. odbc_close($con);
  103. return $dat;
  104. }
  105. }

第二种:sqlserver,sqlserver需要php打开sqlserver扩展,windows下载扩展

sqlserver扩展地址 下载系统对应的64还是32位,还要看支持的php版本,下载下来的压缩包解压

然后把dll文件拷贝到php/ext下 php.ini加入extension=php_sqlsrv.dll.然后就可以用了\

  1. $serverName = "your_server_address"; // 服务器地址
  2. $connectionOptions = array(
  3. "Database" => "your_database_name", // 数据库名
  4. "Uid" => "your_username", // 用户名
  5. "PWD" => "your_password" // 密码
  6. );
  7. // 连接数据库
  8. $conn = sqlsrv_connect($serverName, $connectionOptions);
  9. if ($conn === false) {
  10. die(print_r(sqlsrv_errors(), true));
  11. }
  12. $sql = "SELECT * FROM your_table_name";
  13. $stmt = sqlsrv_query($conn, $sql);
  14. if ($stmt === false) {
  15. die(print_r(sqlsrv_errors(), true));
  16. }
  17. // 输出结果
  18. while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
  19. print_r($row);
  20. }
  21. // 释放资源和关闭连接
  22. sqlsrv_free_stmt($stmt);
  23. sqlsrv_close($conn);

第三种:pdo_sqlsrv

需要下载php_pdo_sqlsrv扩展,php_pdo_sqlsrv下载地址

下载解压拷贝到php/ext下

  1. try {
  2. // 连接字符串格式:"DRIVER={SQL Server Native Client 10.0};Server=你的服务器地址;Database=你的数据库名;Trusted_Connection=yes;"
  3. // 或者使用SQL Server 2012或更高版本的格式:"Server=你的服务器地址;Database=你的数据库名;Integrated Security=true;"
  4. $connectionString = "DRIVER={SQL Server};Server=your_server_address;Database=your_database_name;Trusted_Connection=yes;";
  5. $db = new PDO($connectionString);
  6. // 测试连接
  7. $stmt = $db->query("SELECT * FROM your_table_name");
  8. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  9. print_r($rows); // 输出查询结果
  10. } catch (PDOException $e) {
  11. echo "数据库连接失败: " . $e->getMessage();
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/893709
推荐阅读
相关标签
  

闽ICP备14008679号