zoukankan      html  css  js  c++  java
  • CodeIgniter学习笔记(七)——CI中的数据库操作

    CI数据库配置文件是/application/config/database.php

    // 可以创建多个数据库连接配置,通过$active_group选择使用哪个数据库连接
    $active_group = 'default';
    
    // 配置是否加载查询构建类,默认为TRUE,通常保持默认值
    $query_builder = TRUE;
    
    // 数据库连接配置,可以有多个连接配置,索引需要区分开
    $db['default'] = array(
        'dsn'    => '',
        'hostname' => 'localhost',        // ip
        'username' => 'root',            // 用户名
        'password' => '123456',            // 密码
        'database' => 'workplatform',    // 数据库名称
        'dbdriver' => 'mysqli',            // 使用什么库访问数据库
                                        // 目前可以支持cubrid,ibase,mssql,mysql,mysqli,oci8
                                        // odbc, pdo, postgre, sqlite, sqlite3, sqlsrv
        'dbprefix' => '',                // 表前缀
        'pconnect' => FALSE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,            // 是否启用查询缓存
        'cachedir' => '',                // 查询缓存目录
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',                // 交换表前缀,表前缀的替换写法
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );

    在使用数据库前,需要使用装载器来加载数据库对象

    $this->load->database();

    装载完成后,$this->db就是这个数据库对象,以后的数据操作都是调用这个对象的方法进行

    首先定义SQL语句:

    $sql = 'SELECT * FROM user';

    再调用db对象的query方法进行查询

    $result = $this->db->query($sql);

    返回值$result是一个对象,通过调用它的方法可以返回不同形式的结果,例如:调用它的result()方法获取查询结果

    $users = $result->result();

    此时,$users是一个对象数组,或者调用它的result_array()方法获取关联数组查询结果

    $users = $result->result_array();

    调用row()方法以对象形式返回第一条记录或第几条记录

    $users = $result->row();

    但是,如果SQL是增、删、修改语句,query()方法将返回TRUE或FALSE,此时通过db的方法可以获取执行的结果,比如:

    $this->db->affected_rows();    // 获取影响的行数
    $this->db->insert_id();        // 获取插入数据的id

    在执行数据库操作前,由于不知道在查询前$this->db是否已经生成,因此都需要调用$this->load->database()方法,通过修改/application/config/autoload.php文件,可以让CI自动加载数据库

    $autoload['libraries'] = array('database');

    如果SQL语句中的变量过多,会影响语句的编写,这时可以采用占位符来解决

    $data[0] = 'dj';
    $data[1] = '123456';
    $sql = "INSERT INTO user (account, password, usertype, username) VALUES ('1231', ?, '1', ?)";
    $result = $this->db->query($sql, $data);

    传入的数组中的元素会依次取代SQL中的?,生成实际的SQL语句

    备注:在测试这段代码时,由于错误的在字段名两侧加上了’,造成一直报错,引以为戒

  • 相关阅读:
    MySQL进阶(视图)---py全栈
    py基础__socket编程
    MIPS Instruction Set
    WD-保修验证(WCC7K4ARTDF1)
    Seagate-保修验证(za25shrx)
    excel-vlookup
    ebook https://salttiger.com/category/notification/
    远程登录DSM,显示“您没有权限使用本项服务?
    tplink-如何远程WEB管理路由器?
    synology terminal
  • 原文地址:https://www.cnblogs.com/iamsupercola/p/4631768.html
Copyright © 2011-2022 走看看