Manual do PHP
Anterior |  | Próxima

# XLVI. Firebird/InterBase

# Introdução

Firebird/InterBase é um banco de dados relacional que oferecere a maioria da funcionalidade do ANSI SQL-92 que funciona no Linux, Windows, e uma variedade de plataformas Unix. Firebird/InterBase oferrece uma exelente concorencia, alta performance, e uma linguagem poderosa que suporta stored procedures e triggers. Ele é usado em sistemas de produção, sobre uma variedade de nomes deste 1981.

InterBase é o nome da variante de código fechado deste RDBMS que foi desenvolvido pela Borland/Inprise. maiores informações sobre o InterBase esta disponível em http://www.interbase.com/.

Firebird é um projeto comercialmente independente de programadores C e C++, conselheiros tecnicos e pessoal de suporte desenvolvendo e melhorando um banco de dados relacional, multi-plataforma baseado no código fonte liberado pela Inprise Corp (agora conhecido como Borland Software Corp) sobre InterBase Public License v.1.0 em 25 de Julho de 2000. Maiores informações sobre o Firebird esta disponível em http://www.firebirdsql.org/.

> Nota: Esta extensão suporta InterBase versão 5 e posteriores e todas as versões do Firebird. Suporte para InterBase versão 5.x será deixado no PHP 5.

> Este banco de dados usa aspas simples (') para escapar, um funcionamento semelhante ao do banco de dados Sybase, adicione ao seu `php.ini` a seguinte diretiva:

> `magic_quotes_sybase = On`

# Dependências

# Instalação

Para ativar o suporte InterBase, configure o PHP com --with-interbase[=DIR], aonde DIR é o diretório base da instalação do InterBase, o qual o padrão é `/usr/interbase`.

> Nota para os usários de Win32: Para ativar este módulo em um ambiente Windows, você deverá copiar `gds32.dll` da pasta DLL do pacote binário PHP/Win32 para a pasta SYSTEM32 em seu computador com Windows. (Ex: `C:\WINNT\SYSTEM32` or `C:\WINDOWS\SYSTEM32`). No caso de você já ter o sevidor de banco de dados InterBase na mesma máquina onde o PHP esta sendo executado, você já deve ter esta DLL. Então você não precisará copiar `gds32.dll` a partir da pasta DLL.

# Configurações em execução

O comportamento dessas funções podem ser modificado pelas configurações do `php.ini`.

Tabela 1. Opções de configuração do InterBase

Nome | Padrão | Modificável
--- | --- | ---
ibase.allow_persistent | "On" | PHP_INI_SYSTEM
ibase.max_persistent | "-1" | PHP_INI_SYSTEM
ibase.max_links | "-1" | PHP_INI_SYSTEM
ibase.default_db | NULL | PHP_INI_SYSTEM
ibase.default_user | NULL | PHP_INI_ALL
ibase.default_password | NULL | PHP_INI_ALL
ibase.default_charset | NULL | PHP_INI_ALL
ibase.timestampformat | "%Y-%m-%d %H:%M:%S" | PHP_INI_ALL
ibase.dateformat | "%Y-%m-%d" | PHP_INI_ALL
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL

Para maiores detalhes e definição das constantes do PHP_INI_* veja ini_set().

Breve descrição das diretivas de configuração.

ibase.allow_persistent boolean

  Quando permitir conexões persistentes ao Firebird/InterBase.

ibase.max_persistent integer

  O número máximo de conexões persistentes com o Firebird/InterBase por processo. Novas conexões criadas com ibase_pconnect() não serão persistentes se este número for excedido.

ibase.max_links integer

  O número máximo de conexões ao Firebird/InterBase por processo, incluindo as conexões persistentes.

ibase.default_db string

  O banco de dados padrão a conectar quando ibase_[p]connect() é chamada sem especificar o nome do banco de dados. Se este valor for definido e o SQL safe mode estiver ativado, não serão permitidas outras conexões a este banco de dados.

ibase.default_user string

  O nome de usuário para usar quando estiver se conectando ao banco de dados se não for especificado um nome de usuário.

ibase.default_password string

  A senha usada ao conectar ao banco de dados se nenhuma senha for especificada.

ibase.default_charset string

  O conjunto de caracteres a usar quando estiver conectando ao banco de dados se nenhum conjunto de caracteres for especificado.

ibase.timestampformat string

ibase.dateformat string

ibase.timeformat string

  Estas diretivas são usadas para definir os formatos de data e hora que são usados ao retornas datas e horas do conjunto de resultados, ou quando estiver fornecendo datas e horas em parâmetros.

# Tipos Resource

# Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

As seguinte constantes podem ser passadas para ibase_trans() para especificar o funcionamento da transação.

Tabela 2. Opções da transação Firebird/InterBase

Constante | Descrição
--- | ---
IBASE_DEFAULT | Serão usadas as definições padrão para a transação. Este padrão é determinado pela biblioteca do cliente, a qual define-o como IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT na maioria ds casos.
IBASE_READ | Começa uma transação apenas para leitura.
IBASE_WRITE | Começa uma transação de leitura e escrita.
IBASE_CONSISTENCY | Começa uma transação com o nível de isolação definido como 'consistency', o qual indica que a transação não pode ler de tabelas que estão sendo modificadas por outras transações concorrentes.
IBASE_CONCURRENCY | Começa uma transação com o nível de isolação definido como 'concurrency' (ou 'snapshot'), o qual indica que a transação tem acesso a todas as tabelas, mas não pode ver as modificações que foram gravadas por outras transações após a transação ter começado.
IBASE_COMMITTED | Começa uma transação com o nível de isolação definido como 'read committed'. Esta opção deve ser combinada com `IBASE_REC_VERSION` ou `IBASE_REC_NO_VERSION`. Este nível de isolação permite acesso para as modifcações salvar após o início da transação. Se `IBASE_REC_NO_VERSION` for especificada, apenas a ultima versão de uma linha pode ser lida. Se `IBASE_REC_VERSION` for especificada, uma linha pode ser lida mesmo quando exista uma modificação pendente em uma transação concorrente.
IBASE_WAIT | Indica que uma transação deve esperar e tentar novamente quando aconteça um conflito.
IBASE_NOWAIT | Indica que a transação deve falhar imediatamente quando aconteça um conflito.

As seguintes constantes podem ser passadas para ibase_fetch_row(), ibase_fetch_assoc() ou ibase_fetch_object() para especificar o funcionamento para obter.

Tabela 3. Opções para obter do Firebird/InterBase

Constante | Descrição
--- | ---
IBASE_FETCH_BLOBS | Também disponível como `IBASE_TEXT`para compatibilidade com versões anteriores. Faz com que o conteúdo de campos BLOB serão retornados diretamente, ao invés de serem retornados como identificadores BLOB.
IBASE_FETCH_ARRAYS | Faz com que as arrays sejam retornadas diretamente. Se não, são retornados identificadores de array. Identificadores de array somente podem ser usados como argumentos para operações INSERT, já que não estão disponíveis atualmente nenhuma função para manipular identificadores de array.
IBASE_UNIXTIME | Faz com que campos de date e time não sejam retornados como strings, mas como timestamps UNIX (o número de segundos deste epoch, o qual é 1-Jan-1970 0:00 UTC). Pode ser problematico se usado com datas antes de 1970 em alguns sistemas.

As seguintes constantes são usados para passar requesições e opções para as funções da API de serviços (ibase_server_info(), ibase_db_info (), ibase_backup(), ibase_restore () e ibase_maintain_db()). Por favor veja os manual do Firebird/InterBase para o significado destas opções.

`IBASE_BKP_IGNORE_CHECKSUMS`

`IBASE_BKP_IGNORE_LIMBO`

`IBASE_BKP_METADATA_ONLY`

`IBASE_BKP_NO_GARBAGE_COLLECT`

`IBASE_BKP_OLD_DESCRIPTIONS`

`IBASE_BKP_NON_TRANSPORTABLE`

`IBASE_BKP_CONVERT`

  Options to ibase_backup()()

`IBASE_RES_DEACTIVATE_IDX`

`IBASE_RES_NO_SHADOW`

`IBASE_RES_NO_VALIDITY`

`IBASE_RES_ONE_AT_A_TIME`

`IBASE_RES_REPLACE`

`IBASE_RES_CREATE`

`IBASE_RES_USE_ALL_SPACE`

  Options to ibase_restore()

`IBASE_PRP_PAGE_BUFFERS`

`IBASE_PRP_SWEEP_INTERVAL`

`IBASE_PRP_SHUTDOWN_DB`

`IBASE_PRP_DENY_NEW_TRANSACTIONS`

`IBASE_PRP_DENY_NEW_ATTACHMENTS`

`IBASE_PRP_RESERVE_SPACE`

`IBASE_PRP_RES_USE_FULL`

`IBASE_PRP_RES`

`IBASE_PRP_WRITE_MODE`

`IBASE_PRP_WM_ASYNC`

`IBASE_PRP_WM_SYNC`

`IBASE_PRP_ACCESS_MODE`

`IBASE_PRP_AM_READONLY`

`IBASE_PRP_AM_READWRITE`

`IBASE_PRP_SET_SQL_DIALECT`

`IBASE_PRP_ACTIVATE`

`IBASE_PRP_DB_ONLINE`

`IBASE_RPR_CHECK_DB`

`IBASE_RPR_IGNORE_CHECKSUM`

`IBASE_RPR_KILL_SHADOWS`

`IBASE_RPR_MEND_DB`

`IBASE_RPR_VALIDATE_DB`

`IBASE_RPR_FULL`

`IBASE_RPR_SWEEP_DB`

  Opções para ibase_maintain_db()

`IBASE_STS_DATA_PAGES`

`IBASE_STS_DB_LOG`

`IBASE_STS_HDR_PAGES`

`IBASE_STS_IDX_PAGES`

`IBASE_STS_SYS_RELATIONS`

  Opções para ibase_db_info()

`IBASE_SVC_SERVER_VERSION`

`IBASE_SVC_IMPLEMENTATION`

`IBASE_SVC_GET_ENV`

`IBASE_SVC_GET_ENV_LOCK`

`IBASE_SVC_GET_ENV_MSG`

`IBASE_SVC_USER_DBPATH`

`IBASE_SVC_SVR_DB_INFO`

`IBASE_SVC_GET_USERS`

  Opções para ibase_server_info()

Anterior | Principal | Próxima
hw_api->userlist | Acima | ibase_add_user