CodeIgniter

1.简介

CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库,以及简单的接口和逻辑结构。通过减少代码量,CodeIgniter 让你更加专注于你的创造性工作。

本文介绍 CodeIgniter 该如何连接使用瀚高数据库。

2.加载驱动

具体操作步骤请参考 php_pdo_pgsql 接口说明文档。

3.数据库连接

3.1.数据库准备

create database codeigniter;

CREATE TABLE public.student (
stu_no character varying NOT NULL,
stu_name character varying
);

INSERT INTO public.student VALUES ('1', 'zhangsan');
INSERT INTO public.student VALUES ('2', 'lisi');

3.2.数据库配置

CodeIgniter 有一个用来保存数据库配置的文件(用户名,密码,数据库名等),配置文件 application/Config/Database.php

public array $default = [
'DSN' => '',
'hostname' => '192.168.100.101',
'username' => 'sysdba',
'password' => 'Qwer@1234',
'database' => 'codeigniter',
'DBDriver' => 'Postgre',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => true,
'charset' => 'utf8',
//'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 5866,
'numberNative' => false,
];

3.3.路由配置示例

路由规则定义在 app/config/Routes.php 文件中。

use CodeIgniter\Router\RouteCollection;
use App\Controllers\StudentController; //需添加

/**
* @var RouteCollection $routes
*/
$routes->get('/', 'Home::index');
$routes->get('conn', [StudentController::class, 'conn']); //需添加

3.4.控制层代码示例

文本编辑器,在 **/application/controllers/ **新建一个文件 StudentController.php , 代码如下:

<?php 

namespace App\Controllers;

class StudentController extends BaseController
{
public function conn()
{
$db = db_connect();
$query = $db->query('select * from student');
foreach ($query->getResult() as $row)
{
$stu_no = $row->stu_no;
$stu_name = $row->stu_name;
echo $stu_no . "\r" . $stu_name . "<br>";
}

}
}

4.常见问题

1)Main connection [Postgre]: Call to undefined function CodeIgniter\Database\Postgre\pg_connect()

问题原因:php未成功加载pdo_pgsql扩展

解决方案:php.ini 文件,检查pdo_pgsql是否加载成功

2) Main connection [Postgre]: pg_connect(): Unable to connect to PostgreSQL server: authentication method 13 not supported

问题原因:瀚高数据库支持的认证密码加密方式包括 md5, sm3 和 scram-sha-256 ,报错是因为使用了sm3,驱动不支持国密算法

解决方案一:数据库密码认证方式修改为 md5 或 scram-sha-256

解决方案二:下载替换对应版本的驱动,具体操作方法请参考 php_pdo_pgsql 接口说明