php连接sql server

news2024/9/21 2:30:41

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();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dora-rs学习之Rust 和机器人

最近在研究一个网红机器人框架 dora-rs&#xff0c;也看到一些具身智能相关&#xff0c;做机器人遥操作与数据采集及可视化系统的公司使用rust来开发&#xff0c;这里探讨一下dora-rs和rust给机器人带来什么&#xff0c;引述官方的描述&#xff1a;Hello from dora-rs | dora-r…

svelte - 5. 动画

svelte/motion模块导出两个函数&#xff1a; tweened 和 spring。 用于创建writable&#xff08;可写&#xff09;store&#xff0c;其值会在set 和 update之后更新&#xff0c;而不是立即更新。 &#xff08;人话&#xff1a;用 svelte 提供的tweened 和 spring可以达成流程变…

数学建模学习(1)遗传算法

一、简介 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种用于解决优化和搜索问题的进化算法。它基于自然选择和遗传学原理&#xff0c;通过模拟生物进化过程来寻找最优解。 以下是遗传算法的主要步骤和概念&#xff1a; 初始化种群&#xff08;Initialization&a…

react中嵌套路由以及默认显示二级路由

1.安装插件 npm install react-router-dom 2.新建文件及页面 在scr/page下新建layout、about、home文件夹&#xff0c;分别在对应的文件夹下新建入口文件index.js&#xff1b;src下新建router文件夹&#xff0c;该文件夹下新建入口文件index.js 3.配置路由 如何配置路由&am…

昇思学习打卡-25-自然语言处理/RNN实现情感分类

文章目录 数据下载加载预训练词向量数据集预处理模型构建损失函数与优化器训练逻辑评估指标和逻辑模型训练与保存模型加载与测试自定义输入测试测试 情感分类是自然语言处理中的经典任务&#xff0c;是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型&…

android audio不同音频流,(六)settings内音频流音量调整

&#xff08;1&#xff09;settings内&#xff0c;可设置音频流音量&#xff0c;如下图&#xff1a; &#xff08;2&#xff09;settings调整音量条进度&#xff0c;会触发SeekBarVolumizer对象&#xff1a; SeekBarVolumizer文件路径&#xff1a; frameworks/base/core/java/…

设计模式13-单件模式

设计模式13-单件模式 写在前面对象性能模式典型模式1. 单例模式&#xff08;Singleton Pattern&#xff09;2. 享元模式&#xff08;Flyweight Pattern&#xff09;3. 原型模式&#xff08;Prototype Pattern&#xff09;4. 对象池模式&#xff08;Object Pool Pattern&#xf…

WebRTC QoS方法十三.2(Jitter延时的计算)

一、背景介绍 一些报文在网络传输中&#xff0c;会存在丢包重传和延时的情况。渲染时需要进行适当缓存&#xff0c;等待丢失被重传的报文或者正在路上传输的报文。 jitter延时计算是确认需要缓存的时间 另外&#xff0c;在检测到帧有重传情况时&#xff0c;也可适当在渲染时…

无人机图像目标检测技术详解

当前研究领域的热点之一。无人机搭载的高清摄像头能够实时捕获大量图像数据&#xff0c;对这些数据进行有效的目标检测对于军事侦察、环境监测、灾害救援等领域具有重要意义。本文将对无人机图像目标检测技术进行详解&#xff0c;包括图像处理技术、目标检测算法、关键技术应用…

LoFTR关键点特征匹配算法环境构建与图像匹配测试Demo

0&#xff0c;LoFTR CVPR 2021论文《LoFTR: Detector-Free Local Feature Matching with Transformers》开源代码 1&#xff0c;项目主页 LoFTR: Detector-Free Local Feature Matching with Transformers 2&#xff0c;GItHub主页 GitHub - zju3dv/LoFTR: Code for "…

Gen AI核心技术发展趋势分析

Gen AI核心技术解析及发展趋势 判别式模型&#xff0c;适用于处理回归与分类任务&#xff0c;其核心在于精准区分各类数据。与生成模型的生成新数据不同&#xff0c;判别模型专注于揭示输入特征与输出标签之间的紧密联系&#xff0c;从而实现准确分类或预测。在众多应用领域&am…

VS Code打开新文件会覆盖之前的窗口,解决办法

当我在VS Code中打开文件夹时&#xff0c;文件夹中只有一个文件能展示在窗口中&#xff0c;如果点击打开另外一个文件&#xff0c;之前打开的文件又会被覆盖。这样是无法进行文件之间的关联查找的。 要保证窗口可以打开多个文件&#xff0c;有不同的tab显示&#xff0c;设置如下…

好用的电脑屏幕监控软件推荐,什么软件能够监控电脑?

在当今信息化时代&#xff0c;电脑屏幕监控软件成为了企业管理、家长监管以及教育培训等领域的必备工具。通过实时监控电脑屏幕&#xff0c;这类软件可以有效提高工作效率&#xff0c;防止信息泄露&#xff0c;保障网络安全。本文将详细盘点几款主流的电脑屏幕监控软件&#xf…

PHP基础语法(四)

一、字符串类型 1、字符串定义语法 1&#xff09;单引号字符串&#xff1a;在单引号内部&#xff0c;所有的字符都会按照字面意义解释&#xff0c;不会进行变量替换或转义处理&#xff0c;除了 \ 表示单引号本身。 $str1 Hello, World!;2&#xff09;双引号字符串&#xff…

【机器学习算法基础】(基础机器学习课程)-08-决策树和随机森林-笔记

一、决策树之信息论基础 决策树是一种用来做决策的工具&#xff0c;就像我们生活中的选择树。例如&#xff0c;你在选择今天穿什么衣服时&#xff0c;会根据天气情况、出行活动等进行判断。决策树的构建过程涉及一些信息论的概念&#xff0c;用来衡量和选择最好的“分叉点”来进…

Unity打包设置

1.Resolution and Presentation (分辨率和显示) Fullscreen Window (全屏窗口): 应用程序将以全屏窗口模式运行&#xff0c;但不会独占屏幕。适用于想要全屏显示但仍需访问其他窗口的情况。 Resizable Window (可调整大小的窗口): 允许用户调整应用程序窗口的大小。适用于窗口…

Action通信 实践案例

Action通信 Server端实现 创建服务端功能包&#xff08;注意目录层级&#xff09;&#xff1a; ros2 pkg create my_exer05_action_server --build-type ament_cmake --node-name nav_server --dependencies rclcpp rclcpp_action my_exer_interfaces nav_msgs /*需求&#x…

【vim】ubuntu20-server 安装配置 vim 最新最详细

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【vim】ubuntu20-server 安装配置 vim 最新最详细 开发环境一、vim github二、安装必…

基于SpringBoot实现验证码功能

目录 一 实现思路 二 代码实现 三 代码汇总 现在的登录都需要输入验证码用来检测是否是真人登录&#xff0c;所以验证码功能在现在是非常普遍的&#xff0c;那么接下来我们就基于springboot来实现验证码功能。 一 实现思路 今天我们介绍的是两种主流的验证码&#xff0c;一…

IP地址专用SSL/https证书——10分钟签发

一般常用的SSL证书多为域名型SSL证书&#xff0c;即需要提供准确的域名。如果不能提供域名&#xff0c;只能提供IP地址&#xff0c;则需要一种特殊的SSL证书——IP地址证书。下面是IP地址证书的申请教程 IP地址专用SSL证书获取链接https://www.joyssl.com/certificate/select/…