ES Español
Versión: v2.3.0

Empezar

Comenzar con Medoo es sencillo.

Requisitos

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;