You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
396 lines
11 KiB
PHTML
396 lines
11 KiB
PHTML
4 years ago
|
<?php
|
||
|
|
||
|
namespace Safe;
|
||
|
|
||
|
use Safe\Exceptions\CubridException;
|
||
|
|
||
|
/**
|
||
|
* This function frees the memory occupied by the result data. It returns
|
||
|
* TRUE on success. Note that it can only frees the
|
||
|
* client fetch buffer now, and if you want free all memory, use function
|
||
|
* cubrid_close_request.
|
||
|
*
|
||
|
* @param resource $req_identifier This is the request identifier.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_free_result($req_identifier): void
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_free_result($req_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This function returns the current CUBRID connection charset and is similar
|
||
|
* to the CUBRID MySQL compatible function
|
||
|
* cubrid_client_encoding.
|
||
|
*
|
||
|
* @param resource $conn_identifier The CUBRID connection.
|
||
|
* @return string A string that represents the CUBRID connection charset; on success.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_get_charset($conn_identifier): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_get_charset($conn_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This function returns a string that represents the client library version.
|
||
|
*
|
||
|
* @return string A string that represents the client library version; on success.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_get_client_info(): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_get_client_info();
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This function returns the CUBRID database parameters or it returns FALSE on
|
||
|
* failure. It returns an associative array with the values for the following
|
||
|
* parameters:
|
||
|
*
|
||
|
*
|
||
|
* PARAM_ISOLATION_LEVEL
|
||
|
* PARAM_LOCK_TIMEOUT
|
||
|
* PARAM_MAX_STRING_LENGTH
|
||
|
* PARAM_AUTO_COMMIT
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* Database parameters
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* Parameter
|
||
|
* Description
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* PARAM_ISOLATION_LEVEL
|
||
|
* The transaction isolation level.
|
||
|
*
|
||
|
*
|
||
|
* LOCK_TIMEOUT
|
||
|
* CUBRID provides the lock timeout feature, which sets the waiting
|
||
|
* time (in seconds) for the lock until the transaction lock setting is
|
||
|
* allowed. The default value of the lock_timeout_in_secs parameter is
|
||
|
* -1, which means the application client will wait indefinitely until
|
||
|
* the transaction lock is allowed.
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* PARAM_AUTO_COMMIT
|
||
|
* In CUBRID PHP, auto-commit mode is disabled by default for
|
||
|
* transaction management. It can be set by using
|
||
|
* cubrid_set_autocommit.
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* The following table shows the isolation levels from 1 to 6. It consists of
|
||
|
* table schema (row) and isolation level:
|
||
|
*
|
||
|
* Levels of Isolation Supported by CUBRID
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* Name
|
||
|
* Description
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* SERIALIZABLE (6)
|
||
|
* In this isolation level, problems concerning concurrency (e.g.
|
||
|
* dirty read, non-repeatable read, phantom read, etc.) do not
|
||
|
* occur.
|
||
|
*
|
||
|
*
|
||
|
* REPEATABLE READ CLASS with REPEATABLE READ INSTANCES (5)
|
||
|
* Another transaction T2 cannot update the schema of table A while
|
||
|
* transaction T1 is viewing table A.
|
||
|
* Transaction T1 may experience phantom read for the record R that was
|
||
|
* inserted by another transaction T2 when it is repeatedly retrieving a
|
||
|
* specific record.
|
||
|
*
|
||
|
*
|
||
|
* REPEATABLE READ CLASS with READ COMMITTED INSTANCES (or CURSOR STABILITY) (4)
|
||
|
* Another transaction T2 cannot update the schema of table A while
|
||
|
* transaction T1 is viewing table A.
|
||
|
* Transaction T1 may experience R read (non-repeatable read) that was
|
||
|
* updated and committed by another transaction T2 when it is repeatedly
|
||
|
* retrieving the record R.
|
||
|
*
|
||
|
*
|
||
|
* REPEATABLE READ CLASS with READ UNCOMMITTED INSTANCES (3)
|
||
|
* Default isolation level. Another transaction T2 cannot update
|
||
|
* the schema of table A while transaction T1 is viewing table A.
|
||
|
* Transaction T1 may experience R' read (dirty read) for the record that
|
||
|
* was updated but not committed by another transaction T2.
|
||
|
*
|
||
|
*
|
||
|
* READ COMMITTED CLASS with READ COMMITTED INSTANCES (2)
|
||
|
* Transaction T1 may experience A' read (non-repeatable read) for
|
||
|
* the table that was updated and committed by another transaction T2
|
||
|
* while it is viewing table A repeatedly. Transaction T1 may experience
|
||
|
* R' read (non-repeatable read) for the record that was updated and
|
||
|
* committed by another transaction T2 while it is retrieving the record
|
||
|
* R repeatedly.
|
||
|
*
|
||
|
*
|
||
|
* READ COMMITTED CLASS with READ UNCOMMITTED INSTANCES (1)
|
||
|
* Transaction T1 may experience A' read (non-repeatable read) for
|
||
|
* the table that was updated and committed by another transaction T2
|
||
|
* while it is repeatedly viewing table A. Transaction T1 may experience
|
||
|
* R' read (dirty read) for the record that was updated but not committed
|
||
|
* by another transaction T2.
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
*
|
||
|
* @param resource $conn_identifier The CUBRID connection. If the connection identifier is not specified,
|
||
|
* the last link opened by cubrid_connect is assumed.
|
||
|
* @return array An associative array with CUBRID database parameters; on success.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_get_db_parameter($conn_identifier): array
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_get_db_parameter($conn_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This function returns a string that represents the CUBRID server version.
|
||
|
*
|
||
|
* @param resource $conn_identifier The CUBRID connection.
|
||
|
* @return string A string that represents the CUBRID server version; on success.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_get_server_info($conn_identifier): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_get_server_info($conn_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_insert_id function retrieves the ID
|
||
|
* generated for the AUTO_INCREMENT column which is updated by the previous
|
||
|
* INSERT query. It returns 0 if the previous query does not generate new
|
||
|
* rows.
|
||
|
*
|
||
|
* @param resource $conn_identifier The connection identifier previously obtained by a call to
|
||
|
* cubrid_connect.
|
||
|
* @return string A string representing the ID generated for an AUTO_INCREMENT column by the
|
||
|
* previous query, on success.
|
||
|
*
|
||
|
* 0, if the previous query does not generate new rows.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_insert_id($conn_identifier = null): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
if ($conn_identifier !== null) {
|
||
|
$result = \cubrid_insert_id($conn_identifier);
|
||
|
} else {
|
||
|
$result = \cubrid_insert_id();
|
||
|
}
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_lob2_new function is used to create a lob object (both BLOB and CLOB).
|
||
|
* This function should be used before you bind a lob object.
|
||
|
*
|
||
|
* @param resource $conn_identifier Connection identifier. If the connection identifier is not specified,
|
||
|
* the last connection opened by cubrid_connect or
|
||
|
* cubrid_connect_with_url is assumed.
|
||
|
* @param string $type It may be "BLOB" or "CLOB", it won't be case-sensitive. The default value is "BLOB".
|
||
|
* @return resource Lob identifier when it is successful.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_lob2_new($conn_identifier = null, string $type = "BLOB")
|
||
|
{
|
||
|
error_clear_last();
|
||
|
if ($type !== "BLOB") {
|
||
|
$result = \cubrid_lob2_new($conn_identifier, $type);
|
||
|
} elseif ($conn_identifier !== null) {
|
||
|
$result = \cubrid_lob2_new($conn_identifier);
|
||
|
} else {
|
||
|
$result = \cubrid_lob2_new();
|
||
|
}
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_lob2_size function is used to get the size of a lob object.
|
||
|
*
|
||
|
* @param resource $lob_identifier Lob identifier as a result of cubrid_lob2_new or get from the result set.
|
||
|
* @return int It will return the size of the LOB object when it processes successfully.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_lob2_size($lob_identifier): int
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_lob2_size($lob_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_lob2_size64 function is used to get the
|
||
|
* size of a lob object. If the size of a lob object is larger than an
|
||
|
* integer data can be stored, you can use this function and it will return
|
||
|
* the size as a string.
|
||
|
*
|
||
|
* @param resource $lob_identifier Lob identifier as a result of cubrid_lob2_new or get from the result set.
|
||
|
* @return string It will return the size of the LOB object as a string when it processes successfully.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_lob2_size64($lob_identifier): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_lob2_size64($lob_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_lob2_tell function is used to tell the cursor position of the LOB object.
|
||
|
*
|
||
|
* @param resource $lob_identifier Lob identifier as a result of cubrid_lob2_new or get from the result set.
|
||
|
* @return int It will return the cursor position on the LOB object when it processes successfully.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_lob2_tell($lob_identifier): int
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_lob2_tell($lob_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_lob2_tell64 function is used to tell the
|
||
|
* cursor position of the LOB object. If the size of a lob object is larger
|
||
|
* than an integer data can be stored, you can use this function and it will
|
||
|
* return the position information as a string.
|
||
|
*
|
||
|
* @param resource $lob_identifier Lob identifier as a result of cubrid_lob2_new or get from the result set.
|
||
|
* @return string It will return the cursor position on the LOB object as a string when it processes successfully.
|
||
|
*
|
||
|
* FALSE on failure.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_lob2_tell64($lob_identifier): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_lob2_tell64($lob_identifier);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The cubrid_set_db_parameter function is used to set
|
||
|
* the CUBRID database parameters. It can set the following CUBRID database
|
||
|
* parameters:
|
||
|
*
|
||
|
*
|
||
|
* PARAM_ISOLATION_LEVEL
|
||
|
* PARAM_LOCK_TIMEOUT
|
||
|
*
|
||
|
*
|
||
|
* @param resource $conn_identifier The CUBRID connection. If the connection identifier is not specified,
|
||
|
* the last link opened by cubrid_connect is assumed.
|
||
|
* @param int $param_type Database parameter type.
|
||
|
* @param int $param_value Isolation level value (1-6) or lock timeout (in seconds) value.
|
||
|
* @throws CubridException
|
||
|
*
|
||
|
*/
|
||
|
function cubrid_set_db_parameter($conn_identifier, int $param_type, int $param_value): void
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \cubrid_set_db_parameter($conn_identifier, $param_type, $param_value);
|
||
|
if ($result === false) {
|
||
|
throw CubridException::createFromPhpError();
|
||
|
}
|
||
|
}
|