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);
}