cfd-innovation/cfd-db-adapter
Composer 安装命令:
composer require cfd-innovation/cfd-db-adapter
包简介
Adaptateur de base de données par CFD-Innovation
README 文档
README
Boîte à outils CFD-Innovation
CFD_DB_ADAPTER
Classe permettant de switch entre une base de données DB2, MySQL ou tout autre connecteur supporté par PDO
Prérequis
- DB2 : ext-ibm_db2
- MySQL : ext-mysqli
- PDO : ext-pdo
Types de connecteurs disponibles
- mysql
- db2
- pdo
- ODBC
- SqlSrv
- DBLib
Exemples :
Utilisation de différents connecteurs :
// MySQL
$db = FactoryAdapter::getInstance("mysql", "localhost", "user", "password", "dbname");
// DB2
$db = FactoryAdapter::getInstance("db2", "*LOCAL", "user", "password", "dbname", 1);
// odbc
$db = FactoryAdapter::getInstance("pdo", "odbc:{Driver=IBM i Access ODBC Driver};System=*LOCAL;CCSID=1208;DBQ=qiws;NAM=1", "user", "password");
// sqlsrv
$db = FactoryAdapter::getInstance("pdo", "sqlsrv:Server=localhost\SQLEXPRESS", "user", "password");
// dblib
$db = FactoryAdapter::getInstance("pdo", "dblib:host=localhost;dbname=testdb", "user", "password");
Utilisation simple :
<?php
use CFDInnovation\CFD_DB_ADAPTER\FactoryAdapter;
require 'vendor/autoload.php';
try {
// Instanciation du connecteur de base de données
$db = FactoryAdapter::getInstance("pdo", "host", "user", "password", "qiws", 1);
// Récupération et affichage de tous les clients
$customers = $db->execRequest('SELECT * FROM qcustcdt', true);
foreach ($customers as $customer) {
echo "Nom du client : ".$customer['lstnam']."<br>";
echo "Ville du client : ".$customer['city']."<br>";
}
// Récupération et affichage des détails d'un client à partir de son identifiant'
$cusnum = "938472";
$customer = $db->prepareRequest('SELECT * FROM qcustcdt WHERE CUSNUM = ?', [$cusnum], true);
echo "Nom du client : ".$customer[0]['lstnam']."<br>";
echo "Ville du client : ".$customer[0]['city']."<br>";
echo "Adresse du client : ".$customer[0]['street']."<br>";
echo "Code postal du client : ".$customer[0]['zipcod']."<br>";
} catch (Exception | Error $e) {
var_dump($e);
}
Pour récupérer un connecteur :
$db = FactoryAdapter::getInstance(DB_TYPE, DB_HOST, DB_LOGIN, DB_PWD, DB_NAME, 1);
Ensuite Il est possible d'envoyer une requête simple via la fonction :
// "QUERY" = requête sans paramètre à executer
// true = booléen indiquant si l'on attend un résultat ou non suite à l'exécution de la requête
$db->execRequest("QUERY", true);
Ou une requête préparée :
// "QUERY" = requête avec paramètres (?) à executer
// Tableau contenant les paramètres ainsi que leurs noms
// true = booléen indiquant si l'on attend un résultat ou non suite à l'exécution de la requête
$db->prepareRequest("QUERY", [$param_value], true);
Appel de procédure stockée
// "QUERY" = requête afin d'exécuter la procédure stockée
// Tableau contenant les paramètres ainsi que leurs noms et leurs types
// true = booléen indiquant si l'on attend un résultat ou non suite à l'exécution de la procédure stockée
$result = $db->callProc("call myStoredProc(?, ?)", [['name'=>'id_article', "value"=>'56', 'type'=>'in'], ['name'=>'sortie', "value"=>'', 'type'=>'out']], true)
Récupération du dernier ID créé
$lastInsertedId = $db->getLastId();
Gestion des transactions
// le booléen n'est utile que sous db2, sinon la commande START TRANSACTION; est exécutée
$db->autoCommit($bool);
// Commit
$db->commit();
// Rollback
$db->rollback();
Récupération du dernier ID enregistré
// Si pas ODBC
$lastId = $db->getLastId();
// Si ODBC
$lastId = $db->getLastId($columnName, $table);
Récupération des informations de la structure d'une base de données
Récupération des informations d'une table
$tableInfos = $db->getTableInfos($tableName);
Récupération de la liste des schémas
$tableInfos = $db->getDatabases($dbType);
Cette fonction demande en paramètre le type de distribution de base de données si l'on passe par une connexion pdo. Par exemple si l'ont créé une connexion pdo_odbc, la distribution derrière pourrait être du mysql, db2, sqlsrv, etc...
Les distributions de base de données supportées ainsi que leurs mots-clés :
- Pour PDO
- db2
- sqlsrv
- dblib
Pour récupérer la liste des schémas d'une base de données db2 par exemple :
$dbType = 'db2';
$tableInfos = $db->getDatabases($dbType);
Récupération de la liste des tables d'un schéma
$tableInfos = $db->getTablesFromDatabase(['qiws', 'qwqcent'], 'db2');
Récupération de la liste des colonnes d'une table d'un schéma
$tableInfos = $db->getTablesFromDatabase(['qwqcent.orders', 'qwqcent.inventory'], 'db2');
Il est très important de préfixer complètement chaque table fournie
cfd-innovation/cfd-db-adapter 适用场景与选型建议
cfd-innovation/cfd-db-adapter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 732 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 03 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 cfd-innovation/cfd-db-adapter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 cfd-innovation/cfd-db-adapter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 732
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-03-04