17-06-2026

Guía completa de firebird con php

Firebird es una excelente opción para desarrollar aplicaciones con PHP, especialmente cuando se busca alto rendimiento, bajo consumo de recursos y estabilidad.

Requisitos previos

Antes de empezar, asegúrate de tener:
  • Servidor Firebird instalado (versión 3.0 o superior recomendada)
  • PHP 7.4 o superior
  • Extensión PDO_Firebird activada
En Windows:: Agregar en en el fichero "php.ini":

//La extensión tiene que haber sido descargada y guardada en el directorio donde se encuentran las extensiones de php
extension=pdo_firebird
En Linux:

sudo apt install php8.3-interbase php8.3-pdo-firebird

Conexión básica a Firebird

/ config.php
$host = 'localhost';
$database = 'C:/datos/ruta_base_datos.fdb'; // En Linux: /var/lib/firebird/data/mi_base.fdb
$user = 'usuario_base_datos';
$password = 'password_base_datos'; // ¡Cambia esta contraseña en producción!

try {
$pdo = new PDO(
"firebird:dbname=$host:$database;charset=utf8", 
$user, 
$password,
[
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  PDO::ATTR_EMULATE_PREPARES => false
]
);

echo "Conexión exitosa a Firebird";

} catch (PDOException $e) {
die("Error de conexión: " . $e->getMessage());
}

Ejemplos CRUD

Consultar registros

// Listar clientes
$stmt = $pdo->prepare("SELECT id, nombre, email, fecha_registro 
FROM clientes 
WHERE activo = 1 
ORDER BY nombre");

$stmt->execute();
$clientes = $stmt->fetchAll();

foreach ($clientes as $cliente) {
echo "ID: {$cliente['id']} - {$cliente['nombre']} ({$cliente['email']})
"; }

Insertar registros

$stmt = $pdo->prepare("INSERT INTO clientes (nombre, email, telefono, fecha_registro) 
VALUES (:nombre, :email, :telefono, CURRENT_TIMESTAMP)");

$data = [
':nombre'=> 'Juan Pérez',
':email'=> 'juan@example.com',
':telefono' => '555-123456'
];

try {
$stmt->execute($data);
$nuevoId = $pdo->lastInsertId();
echo "Cliente insertado correctamente. ID: $nuevoId";
} catch (PDOException $e) {
echo "Error al insertar: " . $e->getMessage();
}

Actualizar registros

$stmt = $pdo->prepare("UPDATE clientes 
SET nombre = :nombre, email = :email 
WHERE id = :id");

$stmt->execute([
':nombre' => 'Juan Pérez Gómez',
':email'  => 'juan.nuevo@email.com',
':id' => 15
]);
echo "Registros actualizados: " . $stmt->rowCount();

Eliminar registros

$stmt = $pdo->prepare("DELETE FROM clientes WHERE id = :id");
$stmt->execute([':id' => 10]);

echo "Registros eliminados: " . $stmt->rowCount();

Transacciones

try {
$pdo->beginTransaction();

// Primera operación
$stmt1 = $pdo->prepare("INSERT INTO pedidos (...) VALUES (...)");
$stmt1->execute($datosPedido);

// Segunda operación
$stmt2 = $pdo->prepare("UPDATE inventario SET stock = stock - 1 WHERE producto_id = ?");
$stmt2->execute([$productoId]);

$pdo->commit();
echo "Transacción completada con éxito";

} catch (Exception $e) {
$pdo->rollBack();
echo "Transacción revertida: " . $e->getMessage();
}

Consultas preparadas con FETCH

$stmt = $pdo->prepare("SELECT * FROM clientes WHERE nombre LIKE :busqueda");
$stmt->execute([':busqueda' => '%Juan%']);

while ($row = $stmt->fetch()) {
print_r($row);
}