php连接sql server

php连接sqlserver有三种方式

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

<?php
/**
 * odbcServer.php
 * Author: Erekys
 */

namespace App\Model;
class odbcServer{

    public static $server;
    public static $username;
    public static $password;
    public static $database;

    // 静态私有变量,保存类的唯一实例  
    private static $instance = null;  
  
    public function __construct () {
       $this->server   = server;
       $this->username = username;
       $this->database = database;
       $this->password = password;
    }

     // 私有克隆方法,防止外部克隆  
    private function __clone()  
    {  
    }  
  
    // 私有反序列化方法,防止外部反序列化  
    private function __wakeup()  
    {  
    }  
  
    // 静态公有方法,用于获取类的唯一实例  
    public static function getInstance()  
    {  
        if (self::$instance === null) {  
            self::$instance = new self();  
        }  
        return self::$instance;  
    } 
        /**
     * db_con
     *
     * 创建SqlServer连接
     */
    public function db_con()
    {
        $server = $this->server;
        $username = $this->username; //数据库用户名
        $password = $this->password;   //数据库密码
        $database = $this->database;     //数据库
        @header("Content-Type:text/html;charset=GB18030"); 
        try {
            // DSN 是 Data Source Name 的缩写,指定连接数据源的名称
            $dsn = "Driver={SQL Server};Server=192.168.0.106;Database=QHXJXdata;";
         
            // 使用 odbc_connect() 函数建立连接
            $conn = odbc_connect($dsn, 'sa', 'lhq119LHQ');
         
            return $conn;
        }catch (Exception $e) {
            echo "异常信息:", $e->getMessage();
        }
    }
    /**
     * db_query
     * 执行select语句,返回二维数组。
     */
    public function db_query($sql, $fieldcount)
    {
        $con = db_con();
        if (is_null($con))
            return null;
        $sql=iconv('UTF-8','GBK',$sql);
        $rs = odbc_exec($con, $sql);
     
        if( $rs === false) {
            //echo 'sql error : ' . $sql;
            //exit;
        }
     
        $table = [];
     
        if( $rs === false || odbc_num_rows($rs) == 0 ) {
            return $table;
        }
     
        while (odbc_fetch_row($rs)) {
            $row = [];
            $n = 0;
            while( $n < $fieldcount ) {
                $row[] = odbc_result($rs, ++$n);
            }
            $table[] = $row;
        }
     
        if( count($table) > 0  ) {
            odbc_free_result($rs);
        }
     
        odbc_close($con);
     
        return $table;
    }
     
    /**
     * odbc_exec
     * 执行insert,update或delete语句。
     * 如果执行不成功,调整一下数据库参数和odbc_connect参数。
     */
    public function db_exec($sql)
    {
        $con = db_con();
        if (is_null($con))
            return null;
        $dat = odbc_exec($con, $sql);
        odbc_close($con);
        return $dat;
    }
} 

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

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

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

$serverName = "your_server_address"; // 服务器地址
$connectionOptions = array(
    "Database" => "your_database_name", // 数据库名
    "Uid" => "your_username", // 用户名
    "PWD" => "your_password" // 密码
);
 
// 连接数据库
$conn = sqlsrv_connect($serverName, $connectionOptions);
 
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}
 
$sql = "SELECT * FROM your_table_name";
$stmt = sqlsrv_query($conn, $sql);
 
if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
 
// 输出结果
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    print_r($row);
}
 
// 释放资源和关闭连接
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

第三种:pdo_sqlsrv

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

下载解压拷贝到php/ext下

try {
    // 连接字符串格式:"DRIVER={SQL Server Native Client 10.0};Server=你的服务器地址;Database=你的数据库名;Trusted_Connection=yes;"
    // 或者使用SQL Server 2012或更高版本的格式:"Server=你的服务器地址;Database=你的数据库名;Integrated Security=true;"
    $connectionString = "DRIVER={SQL Server};Server=your_server_address;Database=your_database_name;Trusted_Connection=yes;";
    
    $db = new PDO($connectionString);
    
    // 测试连接
    $stmt = $db->query("SELECT * FROM your_table_name");
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    print_r($rows); // 输出查询结果
    
} catch (PDOException $e) {
    echo "数据库连接失败: " . $e->getMessage();
}
相关推荐
童先生20 分钟前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu22 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
老秦包你会1 小时前
Qt第三课 ----------容器类控件
开发语言·qt
凤枭香1 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
ULTRA??1 小时前
C加加中的结构化绑定(解包,折叠展开)
开发语言·c++
远望清一色1 小时前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
confiself1 小时前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
杜杜的man2 小时前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang