$sql='SELECT RF.RDB$FIELD_NAME AS FIELD,RF.RDB$DEFAULT_VALUE AS DEFAULT1,RF.RDB$NULL_FLAG AS NULL1,TRIM(T.RDB$TYPE_NAME) || \'(\' || F.RDB$FIELD_LENGTH || \')\' as TYPE FROM RDB$RELATION_FIELDS RF LEFT JOIN RDB$FIELDS F ON (F.RDB$FIELD_NAME = RF.RDB$FIELD_SOURCE) LEFT JOIN RDB$TYPES T ON (T.RDB$TYPE = F.RDB$FIELD_TYPE) WHERE RDB$RELATION_NAME=UPPER(\''.$tableName.'\') AND T.RDB$FIELD_NAME = \'RDB$FIELD_TYPE\' ORDER By RDB$FIELD_POSITION';
$result=$this->query($sql);
$info=array();
if($result){
foreach($resultas$key=>$val){
$info[trim($val['field'])]=array(
'name'=>trim($val['field']),
'type'=>$val['type'],
'notnull'=>(bool)($val['null1']==1),// 1表示不为Null
'default'=>$val['default1'],
'primary'=>false,
'autoinc'=>false,
);
}
}
//获取主键
$sql='select b.rdb$field_name as field_name from rdb$relation_constraints a join rdb$index_segments b on a.rdb$index_name=b.rdb$index_name where a.rdb$constraint_type=\'PRIMARY KEY\' and a.rdb$relation_name=UPPER(\''.$tableName.'\')';
$rs_temp=$this->query($sql);
foreach($rs_tempas$row){
$info[trim($row['field_name'])]['primary']=true;
}
return$info;
}
/**
*取得数据库的表信息
*@accesspublic
*/
publicfunctiongetTables($dbName=''){
$sql='SELECT DISTINCT RDB$RELATION_NAME FROM RDB$RELATION_FIELDS WHERE RDB$SYSTEM_FLAG=0';
$result=$this->query($sql);
$info=array();
foreach($resultas$key=>$val){
$info[$key]=trim(current($val));
}
return$info;
}
/**
*SQL指令安全过滤
*@accesspublic
*@paramstring$strSQL指令
*@returnstring
*/
publicfunctionescapeString($str){
returnstr_replace("'","''",$str);
}
/**
*limit
*@accesspublic
*@param$limitlimit表达式
*@returnstring
*/
publicfunctionparseLimit($limit){
$limitStr='';
if(!empty($limit)){
$limit=explode(',',$limit);
if(count($limit)>1){
$limitStr=' FIRST '.$limit[1].' SKIP '.$limit[0].' ';