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();
}
相关推荐
色空大师2 分钟前
23种设计模式
java·开发语言·设计模式
Bruce小鬼14 分钟前
QT文件基本操作
开发语言·qt
2202_7544215420 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
我只会发热27 分钟前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee
懷淰メ37 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
宁静@星空1 小时前
006-自定义枚举注解
java·开发语言
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
武子康1 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
珹洺2 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode