📄 common.php
字号:
* @access protected
*/
function _compareDecimalDefinition($current, $previous)
{
return array();
}
// }}}
// {{{ quote()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param string $type type to which the value should be converted to
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access public
*/
function quote($value, $type = null, $quote = true, $escape_wildcards = false)
{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
if (is_null($value)
|| ($value === '' && $db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)
) {
if (!$quote) {
return null;
}
return 'NULL';
}
if (is_null($type)) {
switch (gettype($value)) {
case 'integer':
$type = 'integer';
break;
case 'double':
// todo: default to decimal as float is quite unusual
// $type = 'float';
$type = 'decimal';
break;
case 'boolean':
$type = 'boolean';
break;
case 'array':
$value = serialize($value);
case 'object':
$type = 'text';
break;
default:
if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/', $value)) {
$type = 'timestamp';
} elseif (preg_match('/^\d{2}:\d{2}$/', $value)) {
$type = 'time';
} elseif (preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) {
$type = 'date';
} else {
$type = 'text';
}
break;
}
} elseif (!empty($db->options['datatype_map'][$type])) {
$type = $db->options['datatype_map'][$type];
if (!empty($db->options['datatype_map_callback'][$type])) {
$parameter = array('type' => $type, 'value' => $value, 'quote' => $quote, 'escape_wildcards' => $escape_wildcards);
return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
}
}
if (!method_exists($this, "_quote{$type}")) {
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'type not defined: '.$type, __FUNCTION__);
}
$value = $this->{"_quote{$type}"}($value, $quote, $escape_wildcards);
if ($quote && $escape_wildcards && $db->string_quoting['escape_pattern']
&& $db->string_quoting['escape'] !== $db->string_quoting['escape_pattern']
) {
$value.= $this->patternEscapeString();
}
return $value;
}
// }}}
// {{{ _quoteInteger()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteInteger($value, $quote, $escape_wildcards)
{
return (int)$value;
}
// }}}
// {{{ _quoteText()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that already contains any DBMS specific
* escaped character sequences.
* @access protected
*/
function _quoteText($value, $quote, $escape_wildcards)
{
if (!$quote) {
return $value;
}
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
$value = $db->escape($value, $escape_wildcards);
if (PEAR::isError($value)) {
return $value;
}
return "'".$value."'";
}
// }}}
// {{{ _readFile()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _readFile($value)
{
$close = false;
if (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {
$close = true;
if ($match[1] == 'file://') {
$value = $match[2];
}
$value = @fopen($value, 'r');
}
if (is_resource($value)) {
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
$fp = $value;
$value = '';
while (!@feof($fp)) {
$value.= @fread($fp, $db->options['lob_buffer_length']);
}
if ($close) {
@fclose($fp);
}
}
return $value;
}
// }}}
// {{{ _quoteLOB()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteLOB($value, $quote, $escape_wildcards)
{
$value = $this->_readFile($value);
if (PEAR::isError($value)) {
return $value;
}
return $this->_quoteText($value, $quote, $escape_wildcards);
}
// }}}
// {{{ _quoteCLOB()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteCLOB($value, $quote, $escape_wildcards)
{
return $this->_quoteLOB($value, $quote, $escape_wildcards);
}
// }}}
// {{{ _quoteBLOB()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteBLOB($value, $quote, $escape_wildcards)
{
return $this->_quoteLOB($value, $quote, $escape_wildcards);
}
// }}}
// {{{ _quoteBoolean()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteBoolean($value, $quote, $escape_wildcards)
{
return ($value ? 1 : 0);
}
// }}}
// {{{ _quoteDate()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteDate($value, $quote, $escape_wildcards)
{
if ($value === 'CURRENT_DATE') {
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
if (isset($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) {
return $db->function->now('date');
}
return 'CURRENT_DATE';
}
return $this->_quoteText($value, $quote, $escape_wildcards);
}
// }}}
// {{{ _quoteTimestamp()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteTimestamp($value, $quote, $escape_wildcards)
{
if ($value === 'CURRENT_TIMESTAMP') {
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
if (isset($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) {
return $db->function->now('timestamp');
}
return 'CURRENT_TIMESTAMP';
}
return $this->_quoteText($value, $quote, $escape_wildcards);
}
// }}}
// {{{ _quoteTime()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteTime($value, $quote, $escape_wildcards)
{
if ($value === 'CURRENT_TIME') {
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
if (isset($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) {
return $db->function->now('time');
}
return 'CURRENT_TIME';
}
return $this->_quoteText($value, $quote, $escape_wildcards);
}
// }}}
// {{{ _quoteFloat()
/**
* Convert a text value into a DBMS specific format that is suitable to
* compose query statements.
*
* @param string $value text string value that is intended to be converted.
* @param bool $quote determines if the value should be quoted and escaped
* @param bool $escape_wildcards if to escape escape wildcards
* @return string text string that represents the given argument value in
* a DBMS specific format.
* @access protected
*/
function _quoteFloat($value, $quote, $escape_wildcards)
{
if (preg_match('/^(.*)e([-+])(\d+)$/i', $value, $matches)) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -