Source for file adodb-fbsql.inc.php
Documentation is available at adodb-fbsql.inc.php
@version V4.97 22 Jan 2008 (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Contribution by Frank M. Kromann <frank@frontbase.com>.
if (! defined("_ADODB_FBSQL_LAYER")) {
define("_ADODB_FBSQL_LAYER", 1 );
$max = fbsql_num_rows($qid);
$arr[] = fbsql_tablename($qid,$i);
// returns concatenated string
if (sizeof($arr) > 0) return "CONCAT($s)";
function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
$this->_connectionID = fbsql_connect($argHostname,$argUsername,$argPassword);
if ($argDatabasename) return $this->SelectDB($argDatabasename);
function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)
$this->_connectionID = fbsql_pconnect($argHostname,$argUsername,$argPassword);
if ($argDatabasename) return $this->SelectDB($argDatabasename);
$fld->name = $rs->fields[0];
$fld->type = $rs->fields[1];
// split type into type(length):
if (preg_match("/^(.+)\((\d+)\)$/", $fld->type, $query_array)) {
$fld->type = $query_array[1];
$fld->max_length = $query_array[2];
$fld->not_null = ($rs->fields[2] != 'YES');
$fld->primary_key = ($rs->fields[3] == 'PRI');
$fld->auto_increment = (strpos($rs->fields[5], 'auto_increment') !== false);
// returns queryID or false
function _query($sql,$inputarr)
/* Returns: the last error message from previous database operation */
/* Returns: the last error number from previous database operation */
/*--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------*/
global $ADODB_FETCH_MODE;
$mode = $ADODB_FETCH_MODE;
if ($fieldOffset != - 1) {
$o = @fbsql_fetch_field($this->_queryID, $fieldOffset);
//$o->max_length = -1; // fbsql returns the max length less spaces -- so it is unrealiable
$f = @fbsql_field_flags($this->_queryID,$fieldOffset);
$o->binary = (strpos($f,'binary')!== false);
else if ($fieldOffset == - 1) { /* The $fieldOffset argument is not provided thus its -1 */
$o = @fbsql_fetch_field($this->_queryID);// fbsql returns the max length less spaces -- so it is unrealiable
return @fbsql_data_seek($this->_queryID,$row);
function _fetch($ignore_fields= false)
return ($this->fields == true);
return @fbsql_free_result($this->_queryID);
function MetaType($t,$len=- 1,$fieldobj= false)
$len = $fieldobj->max_length;
$len = - 1; // fbsql max_length is not accurate
case 'CHARACTER VARYING':
if ($len <= $this->blobSize) return 'C';
// so we have to check whether binary...
return !empty($fieldobj->binary) ? 'B' : 'X';
case 'TIME WITH TIME ZONE':
case 'TIMESTAMP WITH TIME ZONE': return 'T';
if (!empty($fieldobj->primary_key)) return 'R';
|