horde/db

Database abstraction library

Package info

github.com/horde/Db

Homepage

Type:horde-library

pkg:composer/horde/db

Statistics

Installs: 4 154

Dependents: 32

Suggesters: 23

Stars: 1

Open Issues: 0

v3.0.0RC2 2026-06-09 00:00 UTC

Requires

Requires (Dev)

Suggests

Provides

None

Conflicts

None

Replaces

None

BSD-2-Clause ec5e68b8306d0bde648e17302c6758879d974ee6

  • Jan Schneider <jan.woop@horde.org>
  • Mike Naberezny <mike.woop@naberezny.com>
  • Chuck Hagenbuch <chuck.woop@horde.org>

dbalschemamigration


README

Horde_Db

Horde_Db provides database connection abstraction and SQL compatibility tools for a number of database systems and PHP extensions. It currently supports the following databases and extensions:

+-------------+----------+
|Database |Extension |
+-------------+----------+
|MySQL/MariaDB|mysql |
| +----------+
| |mysqli |
| +----------+
| |PDO_mysql |
+-------------+----------+
|PostgreSQL |PDO_pgsql |
+-------------+----------+
|SQLite |PDO_sqlite|
+-------------+----------+
|Oracle |oci8 |
+-------------+----------+

Advanced features include:

- Connection abstraction
- SQL compatibility tools
- Database schema management
- Master/server configuration with queries split to write and read instances
- BLOB/CLOB handling
- Caching
- Query logging

Connection management

Connecting to a database is as simple as instantiating a class implementing the Horde_Db_Adapter interface, providing the necessary connection parameters:

MySQL

Please note that the mysql PHP extension is deprecated as of PHP 7, as is the Horde_Db_Adapter_Mysql backend.

$config = [
 'host' => 'localhost',
 'username' => 'user',
 'password' => 'secret',
 'database' => 'db',
];
$db = new Horde_Db_Adapter_Mysqli($config);
$db = new Horde_Db_Adapter_Pdo_Mysql($config);
$db = new Horde_Db_Adapter_Mysql($config);

Full list of connection parameters:

+---------------+---------+--------------------------------------+
|Parameter |Mandatory|Meaning |
+---------------+---------+--------------------------------------+
|charset | |Connection character set |
+---------------+---------+--------------------------------------+
|database/dbname| |Database name |
+---------------+---------+--------------------------------------+
|host | |Host name, if using TCP connection (1)|
+---------------+---------+--------------------------------------+
|port | |Port number, if using TCP connection |
+---------------+---------+--------------------------------------+
|socket | |Socket location, if using Unix sockets|
+---------------+---------+--------------------------------------+
|username |X |Database user |
+---------------+---------+--------------------------------------+

.:1 To workaround MySQL automatically using the unix socket if setting the host to 'localhost', the hostname will be translated from 'localhost' to '127.0.0.1' if using the TCP protocol