nightlinus / oracle-db

oci8 php 扩展的包装,用于访问 Oracle 数据库

v2.0.2 2022-12-11 08:32 UTC

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]);

注意:绑定不是与传递的数组绑定,而是与 Statementbindings 属性绑定,该属性存储 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'])
}