php教程 PHP开发 CodeIgniter 연구 노트 항목 4 - CI의 데이터베이스 작업

CodeIgniter 연구 노트 항목 4 - CI의 데이터베이스 작업

Dec 29, 2016 am 10:16 AM

CI 데이터베이스 구성 파일은 /application/config/database.php입니다

[code]// 可以创建多个数据库连接配置,通过$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
로그인 후 복사

데이터베이스를 사용하기 전에 로더를 사용하여 데이터베이스 개체를 로드해야 합니다

[code]$this->load->database();
로그인 후 복사
로그인 후 복사

로드가 완료된 후 $this->db는 이 데이터베이스 개체입니다. 모든 후속 데이터 작업은 이 개체의 메서드를 호출하여 수행됩니다.

먼저 SQL 문을 정의합니다.

[code]$sql = 'SELECT * FROM user';
로그인 후 복사

db 객체의 쿼리 메소드를 호출하여 쿼리합니다.

[code]$result = $this->db->query($sql);
로그인 후 복사

반환 값 $result는 객체이며, 해당 메소드를 호출하여 다른 형식이 반환될 수 있습니다. >

은 객체 배열이거나, 연관 배열 쿼리 결과를 얻으려면 result_array( ) 메서드를 호출하세요.
[code]$users = $result->result();
로그인 후 복사

$users
로그인 후 복사

row() 메서드를 호출하면 첫 번째 결과를 반환합니다. 레코드 또는 객체 형태의 첫 번째 레코드

[code]$users = $result->result_array();
로그인 후 복사
단, SQL문을 추가, 삭제, 수정하는 경우 query() 메소드는 TRUE 또는 FALSE를 반환합니다. 이때 db 메소드를 통해 실행 결과를 얻을 수 있습니다. 예:
데이터베이스 작업을 실행하기 전에. 쿼리하기 전에
[code]$users = $result->row();
로그인 후 복사
[code]$this->db->affected_rows();    // 获取影响的行数
$this->db->insert_id();        // 获取插入数据的id
로그인 후 복사
이 생성되었는지 확인하려면 /application/을 수정하여

$this->db
로그인 후 복사
메서드를 호출해야 합니다. config/autoload.php 파일을 사용하면 CI가 자동으로 데이터베이스를 로드할 수 있습니다.

SQL 문에 변수가 너무 많으면 문 작성에 영향을 미칠 수 있습니다.
$this->load->database()
로그인 후 복사

들어오는 배열의 요소가 SQL의 ?를 차례로 대체하여 실제 SQL 문을 생성합니다.

[code]$autoload['libraries'] = array('database');
로그인 후 복사

[code]$data[0] = 'dj';
$data[1] = '123456';
$sql = "INSERT INTO user (account, password, usertype, username) VALUES ('1231', ?, '1', ?)";
$result = $this->db->query($sql, $data);
로그인 후 복사
참고: 이 코드를 테스트할 때 필드 이름 양쪽에 '를 추가하는 실수로 인해 항상 오류가 보고되었습니다.

데이터베이스 연결

데이터베이스에 연결하는 방법에는 두 가지가 있습니다. 자동 연결

"자동 연결" 기능은 데이터베이스가 나올 때마다 사용할 수 있습니다. 클래스는 페이지가 로드될 때 자동으로 인스턴스화됩니다. "자동 연결"을 활성화하려면 application/config/autoload.php의 라이브러리 배열에 데이터베이스:




를 추가하세요.手动连接

如果你只有一部分页面需要数据库连接,你可以在那些有需要的函数里手工添加 如下代码来连接数据库,或者写在类的构造函数里,让整个类都可以访问:

[code]$this->load->database();
로그인 후 복사
로그인 후 복사

如果 database() 函数没有指定第一个参数,它将使用数据库配置文件中 指定的组连接数据库。对大多数人而言,这是首选方案。

可用的参数

数据库连接值,用数组或DSN字符串传递;

[code]TRUE/FALSE (boolean) - 是否返回连接ID(参考下文的“连接多数据库”);
TRUE/FALSE (boolean) - 是否启用查询构造器类,默认为 TRUE 。
로그인 후 복사
手动连接到数据库

这个函数的第一个参数是可选的,被用来从你的配置文件中 指定一个特定的数据库组,甚至可以使用没有在配置文件中定义的 数据库连接值。下面是例子:

从你的配置文件中选择一个特定分组:
[code]$this->load->database('group_name');
로그인 후 복사
其中 group_name 是你的配置文件中连接组的名字。

连接一个完全手动指定的数据库,可以传一个数组参数:
[code]$config['hostname'] = 'localhost';
$config['username'] = 'myusername';
$config['password'] = 'mypassword';
$config['database'] = 'mydatabase';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = '';
$config['char_set'] = 'utf8';
$config['dbcollat'] = 'utf8_general_ci';
$this->load->database($config);
로그인 후 복사

注解

对于 PDO 驱动,你应该使用 $config[‘dsn’] 取代 ‘hostname’ 和 ‘database’ 参数:

[code]$config['dsn'] = 'mysql:host=localhost;dbname=mydatabase';
로그인 후 복사


或者你可以使用数据源名称(DSN,Data Source Name)作为参数,DSN 的格式必须类似于下面这样:

[code]$dsn = 'dbdriver://username:password@hostname/database';
$this->load->database($dsn);
로그인 후 복사

当用 DSN 字符串连接时,要覆盖默认配置,可以像添加查询字符串一样添加配置变量。

[code]$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';
$this->load->database($dsn);
로그인 후 복사

注意:将 “group_one” 和 “group_two” 修改为你要连接的组名称 (或者像上面介绍的那样传入连接值数组)

第二个参数 TRUE 表示函数将返回数据库对象。

注解

当你使用这种方式连接数据库时,你将通过你的对象名来执行数据库命令, 而不再是通过这份指南中通篇介绍的,就像下面这样的语法了:

[code]$this->db->query();
$this->db->result();
etc...
로그인 후 복사

取而代之的,你将这样执行数据库命令:

[code]$DB1->query();
$DB1->result();
etc...
로그인 후 복사

注解

如果你只是需要切换到同一个连接的另一个不同的数据库,你没必要创建 独立的数据库配置,你可以像下面这样切换到另一个数据库:

[code]$this->db->db_select($database2_name);
로그인 후 복사


重新连接 / 保持连接有效

当你在处理一些重量级的 PHP 操作时(例如处理图片),如果超过了数据库的超时值, 你应该考虑在执行后续查询之前先调用 reconnect() 方法向数据库发送 ping 命令, 这样可以优雅的保持连接有效或者重新建立起连接。

[code]$this->db->reconnect();
로그인 후 복사

手动关闭连接

虽然 CodeIgniter 可以智能的管理并自动关闭数据库连接,你仍可以用下面的方法显式的关闭连接:

[code]$this->db->close();
로그인 후 복사

查询

[code]$this->db->query();
로그인 후 복사

要提交一个查询,用以下函数:

[code]$this->db->query('YOUR QUERY HERE');
로그인 후 복사

query() 函数以object(对象)的形式返回一个数据库结果集. 当使用 “read” 模式来运行查询时, 你可以使用“显示你的结果集”来显示查询结果; 当使用 “write” 模式来运行查询时, 将会仅根据执行的成功或失败来返回 TRUE 或 FALSE. 当你需要将返回的结果赋值给一个自定义变量的时候, 你可以这样操作:

[code]$query = $this->db->query('YOUR QUERY HERE');

$this->db->simple_query();
로그인 후 복사


这是一个简化版本的 $this->db->query() 函数. 它仅返回 True(bool) 和 False(bool) 以表示查询成功与失败. 它将不会返回查询数据集,无法设置查询计时器(设置环境变量),无法编译绑定数据,不能够存储查询诊断信息。简单地说,他是一个用于提交查询的函数,对于大多数用户而言并不会使用到它。

手工添加数据库前缀

如果你需要为一个数据库手工添加前缀,你可以使用以下步骤。

[code]$this->db->dbprefix('tablename');
// outputs prefix_tablename
로그인 후 복사

保护标识符

在许多数据库中,保护表(table)和字段(field)的名称是明智的,例如在MySQL中使用反引号。Active Record的查询都已被自动保护,然而,如果您需要手动保护一个标识符,您也可以这样:

[code]$this->db->protect_identifiers('table_name');
로그인 후 복사

这个函数也会给你的表名添加一个前缀,它假定在你的数据库配置文件中已指定了一个前缀。可通过将第二个参数设置为TRUE (boolen) 启用前缀:

[code]$this->db->protect_identifiers('table_name', TRUE);
로그인 후 복사
转义查询

将数据转义以后提交到你的数据库是非常好的安全做法,CodeIgniter 提供了 3 个函数帮助你完成这个工作。

$this->db->escape()
로그인 후 복사

这个函数将会确定数据类型,以便仅对字符串类型数据进行转义。并且,它也会自动把数据用单引号括起来,所以你不必手动添加单引号,用法如下:

[code]$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
로그인 후 복사
$this->db->escape_str()
로그인 후 복사

此函数将忽略数据类型对传入数据进行转义。更多时候你将使用上面的函数而不是这个。这个函数的使用方法是:

[code]$sql = "INSERT INTO table (title) VALUES('".$this->db->escape_str($title)."')";

$this->db->escape_like_str() This method should be used when strings are to be used in LIKE conditions so that LIKE wildcards ('%', '_') in the string are also properly escaped. 
$search = '20% raise';
$sql = "SELECT id FROM table WHERE column LIKE '%".$this->db->escape_like_str($search)."%'";
로그인 후 복사

封装查询

封装,通过让系统为你组装各个查询语句,能够简化你的查询语法。参加下面的范例:

[code]$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 

$this->db->query($sql, array(3, 'live', 'Rick'));
로그인 후 복사


查询语句中的问号会自动被查询函数中位于第二个参数位置的数组中的值所替代。

 以上就是CodeIgniter学习笔记 Item4--CI中的数据库操作的内容,更多相关内容请关注PHP中文网(www.php.cn)!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법 CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법 Jul 29, 2023 am 10:53 AM

CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법 소개: 현대 웹 개발에서 미들웨어는 애플리케이션에서 중요한 역할을 합니다. 요청이 컨트롤러에 도달하기 전이나 후에 일부 공유 처리 논리를 수행하는 데 사용할 수 있습니다. 널리 사용되는 PHP 프레임워크인 CodeIgniter는 미들웨어 사용도 지원합니다. 이 글에서는 CodeIgniter에서 사용자 정의 미들웨어를 구현하는 방법을 소개하고 간단한 코드 예제를 제공합니다. 미들웨어 개요: 미들웨어는 일종의 요청입니다.

CodeIgniter 미들웨어: 애플리케이션 응답성 및 페이지 렌더링 가속화 CodeIgniter 미들웨어: 애플리케이션 응답성 및 페이지 렌더링 가속화 Jul 28, 2023 pm 06:51 PM

CodeIgniter 미들웨어: 애플리케이션 응답성 및 페이지 렌더링 가속화 개요: 웹 애플리케이션의 복잡성과 상호 작용이 계속 증가함에 따라 개발자는 애플리케이션 성능과 응답성을 향상시키기 위해 보다 효율적이고 확장 가능한 솔루션을 사용해야 합니다. CodeIgniter(CI)는 많은 유용한 기능을 제공하는 경량 PHP 기반 프레임워크이며 그 중 하나가 미들웨어입니다. 미들웨어는 요청이 컨트롤러에 도달하기 전후에 수행되는 일련의 작업입니다. 이 기사에서는 사용 방법을 소개합니다.

PHP 스크립트를 사용하여 Linux 환경에서 데이터베이스 작업을 수행하는 방법 PHP 스크립트를 사용하여 Linux 환경에서 데이터베이스 작업을 수행하는 방법 Oct 05, 2023 pm 03:48 PM

PHP를 사용하여 Linux 환경에서 데이터베이스 작업을 수행하는 방법 최신 웹 애플리케이션에서 데이터베이스는 필수 구성 요소입니다. PHP는 다양한 데이터베이스와 상호 작용할 수 있는 인기 있는 서버측 스크립팅 언어입니다. 이 기사에서는 Linux 환경에서 데이터베이스 작업을 위해 PHP 스크립트를 사용하는 방법을 소개하고 몇 가지 구체적인 코드 예제를 제공합니다. 1단계: 필요한 소프트웨어 및 종속성 설치 시작하기 전에 Linux 환경에 PHP 및 관련 종속성이 설치되어 있는지 확인해야 합니다. 대개

MySQL 관리를 위해 Pagoda 패널을 사용하는 방법 MySQL 관리를 위해 Pagoda 패널을 사용하는 방법 Jun 21, 2023 am 09:44 AM

Pagoda Panel은 서버, 특히 웹 사이트 구축, 데이터베이스 관리 및 서버 유지 관리가 필요한 소규모 기업이나 개인 사용자를 신속하게 배포, 관리 및 모니터링하는 데 도움이 되는 강력한 패널 소프트웨어입니다. 이러한 작업 중에서 MySQL 데이터베이스 관리는 많은 경우 중요한 작업입니다. 그렇다면 MySQL 관리를 위해 Pagoda 패널을 사용하는 방법은 무엇일까요? 다음으로 단계별로 소개하겠습니다. 1단계: Pagoda 패널 설치 MySQL 관리를 위해 Pagoda 패널을 사용하기 전에 먼저 Pagoda 패널을 설치해야 합니다.

CodeIgniter 프레임워크에서 데이터베이스 쿼리 빌더(Query Builder)를 사용하는 방법 CodeIgniter 프레임워크에서 데이터베이스 쿼리 빌더(Query Builder)를 사용하는 방법 Jul 28, 2023 pm 11:13 PM

CodeIgniter 프레임워크에서 데이터베이스 쿼리 빌더(QueryBuilder)를 사용하는 방법 소개: CodeIgniter는 웹 애플리케이션 개발에서 개발자를 지원하기 위해 많은 강력한 도구와 라이브러리를 제공하는 경량 PHP 프레임워크입니다. 가장 인상적인 기능 중 하나는 데이터베이스 쿼리 문을 작성하고 실행하는 간결하고 강력한 방법을 제공하는 데이터베이스 쿼리 빌더(QueryBuilder)입니다. 이번 글에서는 Co 사용법을 소개하겠습니다.

PHP 개발: CodeIgniter를 사용하여 MVC 패턴 및 RESTful API 구현 PHP 개발: CodeIgniter를 사용하여 MVC 패턴 및 RESTful API 구현 Jun 16, 2023 am 08:09 AM

웹 애플리케이션이 계속 발전함에 따라 애플리케이션을 보다 빠르고 효율적으로 개발하는 것이 중요합니다. 그리고 RESTful API는 웹 애플리케이션에서 널리 사용되기 때문에 개발자는 RESTful API를 생성하고 구현하는 방법을 이해하는 것이 필요합니다. 이번 글에서는 CodeIgniter 프레임워크를 사용하여 MVC 패턴과 RESTful API를 구현하는 방법에 대해 설명합니다. MVC 패턴 MVC 소개(Model-Vie

CodeIgniter 미들웨어: 안전한 파일 업로드 및 다운로드 기능 제공 CodeIgniter 미들웨어: 안전한 파일 업로드 및 다운로드 기능 제공 Aug 01, 2023 pm 03:01 PM

CodeIgniter 미들웨어: 안전한 파일 업로드 및 다운로드 기능 제공 소개: 파일 업로드 및 다운로드는 웹 애플리케이션 개발 중에 매우 일반적인 기능입니다. 그러나 보안상의 이유로 파일 업로드 및 다운로드를 처리하려면 추가 보안 조치가 필요한 경우가 많습니다. CodeIgniter는 개발자가 안전하고 안정적인 웹 애플리케이션을 구축할 수 있도록 지원하는 풍부한 도구와 라이브러리를 제공하는 인기 있는 PHP 프레임워크입니다. 이 기사에서는 CodeIgniter 미들웨어를 사용하여 보안 파일을 구현하는 방법을 소개합니다.

PHP 프레임워크 CodeIgniter를 사용하여 백엔드 관리 시스템을 빠르게 구축하는 방법 PHP 프레임워크 CodeIgniter를 사용하여 백엔드 관리 시스템을 빠르게 구축하는 방법 Jun 27, 2023 am 09:46 AM

오늘날의 인터넷 시대에 사용자에게 사랑받는 웹사이트는 간단하고 명확한 프론트엔드 인터페이스와 강력한 백엔드 관리 시스템을 갖춰야 하는데, PHP 프레임워크인 CodeIgniter는 개발자가 빠르게 백엔드를 구축할 수 있는 탁월한 프레임워크입니다. 관리 시스템. CodeIgniter는 경량, 고효율, 쉬운 확장이라는 특징을 가지고 있습니다. 이 글은 초보자를 대상으로 하며 이 프레임워크를 통해 백엔드 관리 시스템을 빠르게 구축하는 방법을 자세히 설명합니다. 1. 설치 및 구성 PHPCodeIgniter 설치는 PHP 기반입니다.

See all articles