スクロール可能なカーソル |
PDO_CUBRID はスクロール可能なカーソルをサポートしており、デフォルトの型は前進のみのカーソルです。
PDO::prepare を使えばカーソルの型を変えることができます。
|
タイムアウト |
PDO_CUBRID は sql ステートメントの実行時のタイムアウトの設定をサポートしています。
PDO::setAttribute を使えばタイムアウトの値を設定できます。 |
Autocommit_mode およびトランザクション |
PDO_CUBRID は自動コミットとトランザクションをサポートしており、
自動コミットモードがデフォルトで有効になっています。
PDO::setAttribute を使えば状態を変更することができます。
PDO::beginTransaction でトランザクションを開始すると
autocommit_mode は自動的に無効となり、PDO::commit あるいは
PDO::rollBack の後で元の状態に戻します。autocommit_mode
を無効にする前に、それまでの作業は自動的にコミットされることに注意しましょう。
|
複数の SQL 文 |
PDO_CUBRID は複数の SQL 文をサポートしています。
複数の SQL 文はセミコロン (;) で区切られます。 |
スキーマ情報 |
PDO_CUBRID では
PDO::cubrid_schema 関数を用意しており、これでスキーマ情報を取得します。
|
LOBs |
PDO_CUBRID は BLOB/CLOB データ型をサポートしています。PDO における LOB
はストリームで表現されているので、LOB を追加するにはストリームをバインドし、
LOB を取得するには CUBRID PDO が返すストリームを読み込みます。
例1 CUBRID PDO での LOB の追加
<?php $fp = fopen('lob_test.png', 'rb');
$sql_stmt = "INSERT INTO lob_test(name, content) VALUES('lob_test.png', ?)";
$stmt = $dbh->prepare($sql_stmt); $ret = $stmt->bindParam(1, $fp, PDO::PARAM_LOB); $ret = $stmt->execute(); ?>
例2 CUBRID PDO での LOB の取得
<?php $sql_stmt = "SELECT content FROM lob_test WHERE name='lob_test.png'";
$stmt = $dbh->prepare($sql_stmt); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_NUM);
header("Content-Type: image/png"); fpassthru($result[0]); ?>
|
カラムのメタ情報 |
CUBRID PDO における PDOStatement::getColumnMeta
は、次の値を含む連想配列を返します。
- type
- name
- table
- def
- precision
- scale
- not_null
- auto_increment
- unique_key
- multiple_key
- primary_key
- foreign_key
- reverse_index
- reverse_unique
|
コレクションデータ型 |
PDO_CUBRID は SET/MULTISET/SEQUENCE といったコレクションに対応しています。
データ型を省略した場合のデフォルトは char で、次の例のようになります。
例3 CUBRID PDO で、デフォルトのデータ型のセットを追加する例
<?php $conn_str ="cubrid:dbname=demodb;host=localhost;port=33000"; $cubrid_pdo = new PDO($conn_str, 'dba', '');
$cubrid_pdo->exec("DROP TABLE if exists test_tbl"); $cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(VARCHAR))"); $sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);"; $stmt = $cubrid_pdo->prepare($sql_stmt_insert); $data = array("abc","def","ghi"); $ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL); $ret = $stmt->execute(); var_Dump($ret); ?>
例4 CUBRID PDO でのセットの追加でデータ型を指定する例
<?php $conn_str ="cubrid:dbname=demodb;host=localhost;port=33000"; $cubrid_pdo = new PDO($conn_str, 'dba', '');
$cubrid_pdo->exec("DROP TABLE if exists test_tbl"); $cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(int))"); $sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);"; $stmt = $cubrid_pdo->prepare($sql_stmt_insert); $data = array(1,2,3,4); $ret = $stmt->bindParam(1, $data, 0,0,"int"); $ret = $stmt->execute(); var_Dump($ret); ?>
CUBRID のバインドデータ型 (PDOStatement::bindParam の五番目のパラメータ)
- CHAR
- STRING
- NCHAR
- VARNCHAR
- BIT
- VARBIT
- NUMERIC
- NUMBER
- INT
- SHORT
- BIGINT
- MONETARY
- FLOAT
- DOUBLE
- DATE
- TIME
- DATETIME
- TIMESTAMP
|