CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程


codeigniter 3 连接 sql server:正确获取查询结果的教程

本教程旨在指导开发者如何在 CodeIgniter 3 (CI3) 框架中使用 SQL Server 数据库驱动时,正确地从查询结果对象中提取数据。文章将详细解释 CI3 数据库查询结果对象的特性,提供 `result_array()` 等关键方法的用法,并通过完整的配置、模型和控制器示例,帮助您高效、准确地获取并处理 SQL Server 的查询结果。

在使用 CodeIgniter 3 (CI3) 框架与 SQL Server 数据库进行交互时,开发者可能会遇到执行数据库查询后,尽管连接成功,但无法直接从查询结果中提取数据的困惑。这通常不是连接或 SQL 语句本身的问题,而是对 CI3 数据库类返回的结果对象理解不足。本文将深入探讨如何在 CI3 中正确地从 SQL Server 查询结果对象中提取数据,并提供详细的配置、模型和控制器示例。

理解 CodeIgniter 数据库查询结果对象

当您在 CodeIgniter 3 中使用 $this->db->query($sql) 执行一条 SELECT 语句时,如果查询成功,CI3 不会直接返回一个包含数据的数组,而是返回一个 CI_DB_sqlsrv_result 类型的数据库结果对象。这个对象封装了查询的所有信息,包括查询到的行数、字段名以及实际的数据。要访问这些数据,您需要调用该结果对象上的特定方法。

关键结果获取方法

CI3 提供了多种方法来从结果对象中获取数据,最常用的是:

  • result(): 返回一个对象数组。每个对象代表一行数据,其属性对应数据库表的字段名。
  • result_array(): 返回一个关联数组的数组。每个内部关联数组代表一行数据,键名对应数据库表的字段名。
  • row(): 返回一个对象,代表查询结果的第一行。
  • row_array(): 返回一个关联数组,代表查询结果的第一行。
  • num_rows(): 返回查询结果的行数。

数据库配置示例 (config/database.php)

首先,确保您的 CodeIgniter 数据库配置正确指向 SQL Server 驱动。以下是一个典型的配置示例:

Viggle AI Video Viggle AI Video

Powerful AI-powered animation tool and image-to-video AI generator.

Viggle AI Video 115 查看详情 Viggle AI Video
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'      => '',
    'hostname' => '10.xxx.xxx.x', // 您的 SQL Server IP 地址或主机名
    'username' => 'your_username', // 数据库用户名
    'password' => 'your_password', // 数据库密码
    'database' => 'your_database_name', // 数据库名称
    'dbdriver' => 'sqlsrv', // 关键:指定 SQL Server 驱动
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'), // 生产环境建议关闭调试
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8', // 根据您的数据库编码设置
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE, // 如果需要加密连接,请设置为 TRUE
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    's*e_queries' => TRUE // 建议在开发阶段设置为 TRUE 以便调试
);

模型中的正确数据获取示例 (application/models/Mod_login.php)

在模型中,执行查询后,需要调用结果对象的方法来获取实际数据。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Mod_login extends CI_Model {

    public function __construct() {
        parent::__construct();
        // 您可以在此处加载数据库或其他库
    }

    /**
     * 获取应用列表数据
     * @return array|false 返回应用数据数组,或在查询失败时返回 false
     */
    public function getAplikasiData() {
        $sql = "SELECT id, name, description FROM aplikasi"; // 示例 SQL 语句
        $query = $this->db->query($sql);

        // 检查查询是否成功,query() 方法在执行失败时可能返回 FALSE
        if ($query === FALSE) {
            // 记录错误或进行其他错误处理
            log_message('error', 'SQL Query Failed: ' . $this->db->error()['message']);
            return false;
        }

        // 获取查询结果为关联数组的数组
        // var_dump($query->result_array()); // 调试时可在此处查看结果
        // die(); // 调试时可在此处终止执行

        if ($query->num_rows() > 0) {
            return $query->result_array(); // 返回所有结果行作为关联数组
        } else {
            return []; // 没有结果时返回空数组
        }
    }

    /**
     * 获取单个应用数据 (示例)
     * @param int $id 应用ID
     * @return array|false 返回单个应用数据关联数组,或在查询失败/无结果时返回 false
     */
    public function getSingleAplikasi($id) {
        $sql = "SELECT id, name, description FROM aplikasi WHERE id = ?";
        // 使用占位符 '?' 进行查询绑定,防止 SQL 注入
        $query = $this->db->query($sql, array($id)); 

        if ($query === FALSE) {
            log_message('error', 'SQL Query Failed: ' . $this->db->error()['message']);
            return false;
        }

        if ($query->num_rows() > 0) {
            return $query->row_array(); // 返回第一行结果作为关联数组
        } else {
            return false; // 没有结果时返回 false
        }
    }
}

控制器中的调用示例 (application/controllers/Admin.php)

控制器负责调用模型方法,并将获取到的数据传递给视图。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Admin extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('Mod_login'); // 加载模型
        $this->load->helper('url'); // 加载 URL 辅助函数
        $this->load->library('session'); // 加载 session 库
    }

    public function index() {
        $logged_in = $this->session->userdata('logged_in');

        if ($logged_in === TRUE) {
            redirect('dashboard'); // 如果已登录,重定向到仪表盘
        } else {
            $data['aplikasi'] = $this->Mod_login->getAplikasiData(); // 调用模型方法获取数据

            // 检查模型返回的数据
            if ($data['aplikasi'] === false) {
                // 处理数据库查询失败的情况,例如显示错误消息
                $data['error_message'] = '无法加载应用数据,请稍后再试。';
                $this->load->view('admin/login_error_view', $data); // 加载错误视图
            } else {
                $this->load->view('admin/login_data', $data); // 将数据传递给视图
            }
        }
    }

    public function view_aplikasi($id) {
        $aplikasi_item = $this->Mod_login->getSingleAplikasi($id);

        if ($aplikasi_item === false) {
            show_404(); // 或者显示错误页面
        } else {
            $data['aplikasi_detail'] = $aplikasi_item;
            $this->load->view('admin/aplikasi_detail_view', $data);
        }
    }
}

视图中的数据展示 (application/views/admin/login_data.php)

在视图中,您可以像处理普通数组一样遍历并展示 $aplikasi 数据。

<!DOCTYPE html>
<html>
<head>
    <title>登录页面</title>
    <style>
        body { font-family: Arial, sans-serif; }
        ul { list-style-type: none; padding: 0; }
        li { margin-bottom: 10px; padding: 10px; border: 1px solid #eee; border-radius: 5px; }
        .error-message { color: red; font-weight: bold; }
    </style>
</head>
<body>
    <h1>应用列表</h1>
    <?php if (!empty($aplikasi)): ?>

以上就是CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程的详细内容,更多请关注php中文网其它相关文章!


# word  # html  # php  # 大疆公司营销推广  # 推广策划营销招聘  # 河南seo助手打造  # 龙岗seo博客  # 碑营销推广  # 石嘴山门户网站推广公司  # 江北区网站推广方式  # 内蒙古俄语网站建设公司  # 网店袜子营销推广方案  # 内蒙古移动营销推广  # 设置为  # 字段名  # 可在  # 您可以  # 象中  # 数据库查询  # 加载  # 您的  # 查询结果  # AI-powered  # red  # ai  # session  # access  # app  # 编码 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 苹果手机聊天记录删除了如何恢复  Python测试中模块导入路径解析的最佳实践  铁路12306官网入口 铁路12306中国铁路官网登录首页  diskgenius分区工具如何设置Bios启动项  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  MongoDB聚合管道:高效统计列表中各项的文档数量  海外搜索引擎推广效果怎么样,怎么分析效果!  《一起考教师》账号注销方法  《深林》冬季章节图文攻略  J*a实现任务清单管理_集合框架综合入门练手  KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法  192.168.1.1路由器后台入口 192.168.1.1默认登录入口  美发店速赢秘籍  C#解析来自网络的XML流数据 实时错误处理与重试机制  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  OpenWeatherMap API:通过城市名称获取天气预报数据指南  视频号视频怎么提取文案?提取的文案如何优化与使用?  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  《单词速记宝》设置学习计划方法  TikTok网页版实时观看入口 TikTok网页版短视频在线浏览  海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接  HTML与J*aScript实现下拉菜单驱动的动态表格:构建交互式维修表单  如何通过settings.json个性化您的VS Code体验  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  花生壳内网映射新方案  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  《edge浏览器》关闭翻译功能方法  如何配置VS Code作为您Git操作的默认编辑器  PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略  《七读免费小说》开通会员方法  如何高效地基于键列值映射DataFrame中的多个列  百度竞价WAP显示PC链接问题  CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现  QQ网站入口直接登录 QQ官方正版登录页面  《360浏览器》设置摄像头权限方法  韩剧圈正版官网入口_韩剧圈官方指定登录  iPhone 14 Pro如何更改区域设置_iPhone 14 Pro地区语言修改教程  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  FotoBalloon图片左右镜像教程  《原神》月之一版本新增书籍一览  哈尔滨城市通昵称修改方法  海棠阅读网页版_进入海棠网页版在线阅读中心  todesk如何添加信任设备_todesk信任设备设置教程  HTML中多图片上传与预览:解决ID冲突的专业指南  《糖豆》添加舞曲方法  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  Python中深度嵌套字典与列表的数据提取与条件过滤指南  sublime怎么在文件中显示代码结构大纲_sublime符号列表功能  Go反射进阶:访问内嵌结构体中的被遮蔽方法  《气泡星球》兑换码礼包大全 

 2025-11-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.