Versión: v2.3.0
Empezar
Comenzar con Medoo es sencillo.
Requisitos
- PHP 7.3+ con la extensión PDO instalada.
- Una base de datos SQL como MySQL, MSSQL, SQLite u otro motor compatible.
- Asegúrese de que el controlador PDO correspondiente esté instalado y habilitado.
- Conocimientos básicos de SQL.
Lista de extensiones PDO de PHP
La siguiente lista muestra qué extensión PDO instalar según el tipo de base de datos y la plataforma.
| Nombre | Controlador |
| MySQL, MariaDB | php_pdo_mysql |
| MSSQL | php_pdo_sqlsrv / php_pdo_dblib |
| Oracle | php_pdo_oci |
| SQLite | php_pdo_sqlite |
| PostgreSQL | php_pdo_pgsql |
| Sybase | php_pdo_dblib |
Instalación del controlador PDO de PHP
Medoo requiere PHP con soporte PDO. Si PDO aún no está instalado, siga estos pasos.
// Edite php.ini y elimine el punto y coma inicial de la extensión de base de datos que desea habilitar. // .dll se usa en Windows. .so se usa en Linux/UNIX. // Antes ;extension=php_pdo_mysql.dll ;extension=php_pdo_mysql.so // Después extension=php_pdo_mysql.dll extension=php_pdo_mysql.so // Guarde el archivo y luego reinicie PHP o Apache/Nginx. // Si PDO está instalado correctamente, aparecerá en phpinfo().
O instalar desde la terminal. La extensión PDO se habilitará y configurará automáticamente.
$ sudo apt-get install php7.4-mysql
Instalación con Composer
Si usa Composer, instale Medoo con el siguiente comando.
$ composer require catfan/medoo
Composer instala la dependencia automáticamente. Ejecute
composer update solo si necesita actualizar las dependencias manualmente.
$ composer update
Instalación manual
Una alternativa sencilla es descargar
medoo.php, colocarlo en su proyecto e incluirlo con require.require 'Medoo.php';
Configuración
Pase una matriz de configuración para inicializar Medoo e iniciar una conexión de base de datos.
// Cargue el autoloader de Composer. require 'vendor/autoload.php'; // Importe el espacio de nombres de Medoo. use Medoo\Medoo; $database = new Medoo([ // Obligatorio. 'type' => 'mysql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // Opcional. 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_general_ci', 'port' => 3306, // Opcional: prefijo de tabla. Todos los nombres de tabla pasarán a ser PREFIX_table. 'prefix' => 'PREFIX_', // Opcional: habilitar el registro. Está desactivado por defecto para mejorar el rendimiento. 'logging' => true, // Opcional. // Modo de error. // Define como PDO informa los errores. // PDO::ERRMODE_SILENT (predeterminado) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION // Referencia: https://www.php.net/manual/en/pdo.error-handling.php. 'error' => PDO::ERRMODE_SILENT, // Opcional. // Opciones del driver para la conexión. // Referencia: https://www.php.net/manual/en/pdo.setattribute.php. 'option' => [ PDO::ATTR_CASE => PDO::CASE_NATURAL ], // Opcional: comandos que se ejecutarán después de establecer la conexión con la base de datos. 'command' => [ 'SET SQL_MODE=ANSI_QUOTES' ] ]);
Conexión DSN personalizada
También puede proporcionar un DSN personalizado para conectar bases de datos que Medoo no admite de forma predeterminada o para pasar parámetros DSN adicionales.
Formato de cadena de conexión DSN
{controlador}:{clave}={valor};{clave}={valor}
$database = new Medoo([ 'dsn' => [ // Nombre del driver PDO usado en el DSN. 'driver' => 'mydb', // Parámetros DSN en forma de pares clave-valor. 'server' => '12.23.34.45', 'port' => '8886' ], // Opcional: indica a Medoo qué comportamiento específico de base de datos debe usar. 'type' => 'mysql', 'username' => 'your_username', 'password' => 'your_password' ]); // Cadena DSN final generada: mydb:server=12.23.34.45;port=8886
Inicialización desde un objeto PDO
También puede crear Medoo a partir de un objeto PDO inicializado existente.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');
$database = new Medoo([
// Reutiliza una instancia de PDO ya inicializada y conectada.
'pdo' => $pdo,
// Opcional: indica a Medoo qué comportamiento específico de base de datos debe usar.
'type' => 'mysql'
]);
Para MySQL
Esta opción es solo para MySQL.
$database = new Medoo([ // Opcional: socket de MySQL. No lo use junto con server y port. 'socket' => '/tmp/mysql.sock', ]);
Para MariaDB
MariaDB se maneja igual que MySQL. El tipo de base de datos se asigna a
mysql automáticamente.$database = new Medoo([ 'type' => 'mariadb', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', ]);
Para MSSQL
Las conexiones modernas MSSQL suelen utilizar la extensión pdo_sqlsrv tanto en Windows como en Linux/UNIX. Medoo utiliza el controlador pdo_sqlsrv de forma predeterminada. Para entornos heredados que requieren pdo_dblib, configure el controlador explícitamente durante la inicialización. Consulte https://github.com/Microsoft/msphpsql para obtener más detalles.
$database = new Medoo([ 'type' => 'mssql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // Opcional: nombre de la aplicación. 'appname' => 'test', // Opcional. // Obliga a Medoo a usar el driver dblib para MSSQL. // Valor predeterminado: sqlsrv. 'driver' => 'dblib' ]);
Medoo también admite las opciones de conexión MSSQL cuando se utiliza el controlador sqlsrv. Ver detalles en https://docs.microsoft.com/en-us/sql/connect/php/connection-options?view=sql-server-2017.
$database = new Medoo([ 'type' => 'mssql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // Opcional: opciones de conexión para MSSQL. 'application_intent' => 'ReadOnly', 'attach_db_file_name' => './database.sql', 'authentication' => 'SqlPassword', 'column_encryption' => 'Enabled', 'connection_pooling' => 1, 'encrypt' => 1, 'failover_partner' => 'MultiSubnetFailover', 'key_store_authentication' => 'KeyVaultPassword', 'key_store_principal_id' => 'AzureName', 'key_store_secret' => 'AzurePass', 'login_timeout' => '20', 'multiple_active_result_sets' => 1, 'multi_subnet_failover' => 'Yes', 'scrollable' => 'buffered', 'trace_file' => './path', 'trace_on' => 1, 'transaction_isolation' => PDO::SQLSRV_TXN_SNAPSHOT, 'transparent_network_ip_resolution' => 'Enabled', 'trust_server_certificate' => 1, 'wsid' => 'Computer1' ]);
Para SQLite
Base de datos de archivos
$database = new Medoo([ 'type' => 'sqlite', 'database' => 'my/database/path/database.db' ]);
Base de datos de memoria
$database = new Medoo([ 'type' => 'sqlite', 'database' => ':memory:' ]);
Base de datos temporal
La base de datos temporal se elimina cuando se cierra la conexión.
$database = new Medoo([ 'type' => 'sqlite', 'database' => '' ]); // O bien omita por completo la opcion database. $database = new Medoo([ 'type' => 'sqlite' ]);
Depurar cadena DSN
Puede inspeccionar la cadena DSN final llamando a
info().$database = new Medoo([ 'type' => 'mysql', 'host' => '127.0.0.1', 'database' => 'test', 'username' => 'your_username', 'password' => 'your_password', ]); echo $database->info()['dsn']; // mysql:dbname=test;host=127.0.0.1
Modo de prueba
Este modo es útil para pruebas. Puede verificar SQL generado hasta
$database->queryString en diferentes tipos de bases de datos. Las consultas se generan pero no se ejecutan.$database = new Medoo([
'testMode' => true
]);
// Establezca el tipo de base de datos.
$database->type = 'mysql';
$database->select("account", ["user_name"], ["user_id[>]" => 10]);
echo $database->queryString;