120 if (!extension_loaded(
'interbase')) {
121 throw new KumbiaException(
'Debe cargar la extensión de PHP llamada php_interbase');
125 $id_con = ibase_connect(
"{$config['host']}:{$config['name']}",
$config[
'username'],
$config[
'password']);
130 if ($this->id_connection = $id_con) {
145 $this->
debug($sql_query);
150 $this->last_query = $sql_query;
151 if ($result_query = ibase_query($this->id_connection, $sql_query)) {
152 $this->last_result_query = $result_query;
153 return $result_query;
165 if ($this->id_connection) {
166 return ibase_close();
181 if (!$result_query) {
183 if (!$result_query) {
187 if ($opt == db::DB_BOTH) {
188 $fetch = ibase_fetch_assoc($result_query);
191 foreach ($fetch as $key => $value) {
192 $result[$key] = $value;
193 $result[$i++] = $value;
197 if ($opt == db::DB_ASSOC) {
198 return ibase_fetch_assoc($result_query);
200 if ($opt == db::DB_NUM) {
201 return ibase_fetch_row($result_query);
235 if (!$result_query) {
237 if (!$result_query) {
241 if (($fieldName = ibase_field_name($result_query, $number)) !==
false) {
257 if (!$result_query) {
259 if (!$result_query) {
263 if (($success = ibase_data_seek($result_query, $number)) !==
false) {
278 if (($numberRows = ibase_affected_rows()) !==
false) {
292 if (!$this->id_connection) {
293 $this->last_error = ibase_errmsg() ? ibase_errmsg() :
"[Error Desconocido en Firebird: $err]";
299 $this->last_error = ibase_errmsg() ? ibase_errmsg() :
"[Error Desconocido en Firebird: $err]";
300 $this->last_error.= $err;
316 $q = $this->
query($sql);
331 return ibase_errcode();
341 return ibase_insert_id($this->id_connection);
352 $table = strtoupper(addslashes(
"$table"));
354 $num = $this->
fetch_one(
"SELECT COUNT(*) FROM rdb\$relations WHERE rdb\$relation_name = '$table'");
369 if (isset($params[
'limit']) && is_numeric($params[
'limit'])) {
370 $sql_new.=
" FIRST $params[limit]";
373 if (isset($params[
'offset']) && is_numeric($params[
'offset'])) {
374 $sql_new.=
" SKIP $params[offset]";
390 return $this->
query(
"DROP TABLE $table");
395 return $this->
query(
"DROP TABLE $table");
414 $create_sql =
"CREATE TABLE $table (";
415 if (!is_array($definition)) {
416 throw new KumbiaException(
"Definición invalida para crear la tabla '$table'");
418 $create_lines = array();
420 $unique_index = array();
424 foreach ($definition as $field => $field_def) {
425 if (isset($field_def[
'not_null'])) {
426 $not_null = $field_def[
'not_null'] ?
'NOT NULL' :
'';
430 if (isset($field_def[
'size'])) {
431 $size = $field_def[
'size'] ?
'(' . $field_def[
'size'] .
')' :
'';
435 if (isset($field_def[
'index'])) {
436 if ($field_def[
'index']) {
437 $index[] =
"INDEX($field)";
440 if (isset($field_def[
'unique_index'])) {
441 if ($field_def[
'unique_index']) {
442 $index[] =
"UNIQUE($field)";
445 if (isset($field_def[
'primary'])) {
446 if ($field_def[
'primary']) {
447 $primary[] =
"$field";
450 if (isset($field_def[
'auto'])) {
451 if ($field_def[
'auto']) {
452 $gen = $this->
fetch_one(
"SELECT COUNT(*) FROM RDB\$GENERATORS WHERE RDB\$GENERATOR_NAME = UPPER('{$table}_{$field}_seq')");
454 $this->
query(
"INSERT INTO RDB\$GENERATORS (RDB\$GENERATOR_NAME) VALUES (UPPER('{$table}_{$field}_seq'))");
456 $this->
query(
"SET GENERATOR {$table}_{$field}_seq TO 1;");
459 if (isset($field_def[
'extra'])) {
460 $extra = $field_def[
'extra'];
464 $create_lines[] =
"$field " . $field_def[
'type'] . $size .
' ' . $not_null .
' ' . $extra;
466 $create_sql.= join(
',', $create_lines);
467 $last_lines = array();
468 if (count($primary)) {
469 $last_lines[] =
'PRIMARY KEY(' . join(
",", $primary) .
')';
472 $last_lines[] = join(
',', $index);
474 if (count($unique_index)) {
475 $last_lines[] = join(
',', $unique_index);
477 if (count($last_lines)) {
478 $create_sql.=
',' . join(
',', $last_lines) .
')';
480 return $this->
query($create_sql);
502 return $this->
fetch_all(
"DESCRIBE $table");
504 return $this->
fetch_all(
"DESCRIBE $schema.$table");