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 接口说明