CodeIgniter

1.簡介

CodeIgniter 是一套給 PHP 網(wǎng)站開發(fā)者使用的應(yīng)用程序開發(fā)框架和工具包。它的目標(biāo)是讓你能夠更快速的開發(fā),它提供了日常任務(wù)中所需的大量類庫,以及簡單的接口和邏輯結(jié)構(gòu)。通過減少代碼量,CodeIgniter 讓你更加專注于你的創(chuàng)造性工作。

本文介紹 CodeIgniter 該如何連接使用瀚高數(shù)據(jù)庫。

2.加載驅(qū)動

具體操作步驟請參考 php_pdo_pgsql 接口說明文檔。

3.數(shù)據(jù)庫連接

3.1.數(shù)據(jù)庫準(zhǔn)備

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.數(shù)據(jù)庫配置

CodeIgniter 有一個(gè)用來保存數(shù)據(jù)庫配置的文件(用戶名,密碼,數(shù)據(jù)庫名等),配置文件 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.路由配置示例

路由規(guī)則定義在 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/ **新建一個(gè)文件 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擴(kuò)展

解決方案:php.ini 文件,檢查pdo_pgsql是否加載成功

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

問題原因:瀚高數(shù)據(jù)庫支持的認(rèn)證密碼加密方式包括 md5, sm3 和 scram-sha-256 ,報(bào)錯(cuò)是因?yàn)槭褂昧藄m3,驅(qū)動不支持國密算法

解決方案一:數(shù)據(jù)庫密碼認(rèn)證方式修改為 md5 或 scram-sha-256

解決方案二:下載替換對應(yīng)版本的驅(qū)動,具體操作方法請參考 php_pdo_pgsql 接口說明