nightlinus / oracle-db
oci8 php 扩展的包装,用于访问 Oracle 数据库
v2.0.2
2022-12-11 08:32 UTC
Requires
- php: ^7.1 || ^8.0
- ext-oci8: *
Requires (Dev)
README
OrackleDb 包是一个围绕 php 扩展 oci8 的轻量级包装。
简介
安装
此库需要 PHP 5.5 或更高版本。可以通过 composer 从自定义仓库进行安装。
开始使用
可以通过以下方式创建新的数据库实例:
<?php use nightlinus\OracleDb\Database; $db = new Database("USER", "password", "DEV");
在这种情况下,只有首次调用数据库时才会建立连接。连接可以是所有实例共享的,也可以是每个实例单独的,这由配置变量 connection.cache
控制。
$db->config('connection.cache', true);
这样,当前实例将使用已有的数据库连接。
$db->config('connection.cache', false);
这样,将始终使用新的数据库连接。默认情况下设置为这个选项。
当前设置列表及其默认值
- session.charset => AL32UTF8
- session.autocommit => false
- session.dateFormat => DD.MM.YYYY HH24:MI:SS
- session.dateLanguage => false
- connection.persistent => false
- connection.privileged => OCI_DEFAULT
- connection.cache => false
- connection.class => false
- connection.edition => false
- client.identifier =>
- client.info =>
- client.moduleName =>
- profiler.enabled => false
- profiler.class => NAMESPACE . \Profiler
- statement.cache.enabled => true
- statement.cache.size => 50
- statement.cache.class => NAMESPACE . \StatementCache
创建 Statement
库中提供了两种实例化 Statement
的方式
$sql = 'SELECT * FROM DUAL'; $statement = $db->prepare($sql);
或
$sql = 'SELECT * FROM DUAL'; $statement = $db->query($sql);
在第二种情况下,Statement
将立即执行(隐式调用 execute
方法)。
绑定变量
可以通过两种方式绑定:通过 bind* 函数
$sql = 'SELECT *, :b_var FROM DUAL'; $statement = $db->prepare($sql); $statement->bind(['b_var' => 1]);
或者直接从 query
函数
$sql = 'SELECT *, :b_var FROM DUAL'; $statement = $db->query($sql, ['b_var' => 1]);
注意:绑定不是与传递的数组绑定,而是与 Statement
的 bindings
属性绑定,该属性存储 IN 和 OUT 变量的值。
获取数据
该库基于生成器,可以从返回多个元组的任何数据获取方法返回。
$sql = 'SELECT * FROM customers'; $statement = $db->query($sql); foreach($statement as $row) { var_dump($row); } $statement->execute() //Делаем вохможным получение данных повторно ->setReturnType($statement::RETURN_ITERATOR); //из fetch* функция возвращаем итератор, а не готовый массив foreach($statement->fetchMap() as $map) { var_dump($map['123']) }