FR Français
Version: v2.3.0

Commencer

Démarrer avec Medoo est simple.

Exigences

Liste des extensions PHP PDO

La liste suivante indique quelle extension PDO installer en fonction de votre type de base de données et de votre plate-forme.
Nom Pilote
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

PHP PDO Installation du pilote

Medoo nécessite PHP avec la prise en charge de PDO. Si PDO n'est pas encore installé, suivez ces étapes.
// Modifiez php.ini et supprimez le point-virgule initial de l'extension de base de données que vous souhaitez activer.

// .dll est utilisé sous Windows. .so est utilisé sous Linux/UNIX.

// Avant
;extension=php_pdo_mysql.dll
;extension=php_pdo_mysql.so

// Après
extension=php_pdo_mysql.dll
extension=php_pdo_mysql.so

// Enregistrez le fichier, puis redémarrez PHP ou Apache/Nginx.

// Si PDO est installé correctement, il apparaîtra dans phpinfo().
Ou installez à partir du terminal. L'extension PDO sera activée et configurée automatiquement.
$ sudo apt-get install php7.4-mysql

Installation avec Composer

Si vous utilisez Composer, installez Medoo avec la commande suivante.
$ composer require catfan/medoo
Composer installe automatiquement la dépendance. Exécutez composer update uniquement si vous devez actualiser les dépendances manuellement.
$ composer update

Installation manuelle

Une méthode simple consiste à télécharger medoo.php, à le placer dans votre projet, puis à l’inclure avec require.
require 'Medoo.php';

Configuration

Transmettez un tableau de configuration pour initialiser Medoo et démarrer une connexion à la base de données.
// Chargez l'autoloader de Composer.
require 'vendor/autoload.php';

// Importez l'espace de noms Medoo.
use Medoo\Medoo;

$database = new Medoo([
	// Obligatoire.
	'type' => 'mysql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Facultatif.
	'charset' => 'utf8mb4',
	'collation' => 'utf8mb4_general_ci',
	'port' => 3306,

	// Facultatif : prefixe de table. Tous les noms de table deviendront PREFIX_table.
	'prefix' => 'PREFIX_',

	// Facultatif : activer la journalisation. Desactivee par defaut pour de meilleures performances.
	'logging' => true,

	// Facultatif.
	// Mode de gestion des erreurs.
	// Definit comment PDO signale les erreurs.
	// PDO::ERRMODE_SILENT (par défaut) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	// Reference : https://www.php.net/manual/en/pdo.error-handling.php.
	'error' => PDO::ERRMODE_SILENT,

	// Facultatif.
	// Options du pilote pour la connexion.
	// Reference : https://www.php.net/manual/en/pdo.setattribute.php.
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// Facultatif : commandes a executer une fois la connexion a la base etablie.
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

Connexion DSN personnalisée

Vous pouvez également fournir un DSN personnalisé pour connecter des bases de données que Medoo ne prend pas en charge par défaut, ou pour transmettre des paramètres DSN supplémentaires.
Format de chaîne de connexion DSN
{pilote} :{key}={value} ;{key}={value}
$database = new Medoo([
	'dsn' => [
		// Nom du pilote PDO utilisé dans le DSN.
		'driver' => 'mydb',
		// Paramètres DSN sous forme de paires clé-valeur.
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// Facultatif : indique à Medoo quel comportement spécifique à la base de données utiliser.
	'type' => 'mysql',

	'username' => 'your_username',
	'password' => 'your_password'
]);

// Chaîne DSN finale générée :
mydb:server=12.23.34.45;port=8886

Initialisation à partir d'un objet PDO

Vous pouvez également créer Medoo à partir d'un objet PDO initialisé existant.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');

$database = new Medoo([
	// Réutilise une instance PDO déjà initialisée et connectée.
	'pdo' => $pdo,

	// Facultatif : indique à Medoo quel comportement spécifique à la base de données utiliser.
	'type' => 'mysql'
]);

Pour MySQL

Cette option concerne uniquement MySQL.
$database = new Medoo([
	// Facultatif : socket MySQL. Ne l'utilisez pas avec server et port en même temps.
	'socket' => '/tmp/mysql.sock',
]);

Pour MariaDB

MariaDB est géré de la même manière que MySQL. Le type de base de données est automatiquement mappé sur mysql.
$database = new Medoo([
	'type' => 'mariadb',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',
]);

Pour MSSQL

Les connexions MSSQL modernes utilisent généralement l'extension pdo_sqlsrv sous Windows et Linux/UNIX. Medoo utilise le pilote pdo_sqlsrv par défaut. Pour les environnements existants qui nécessitent pdo_dblib, définissez explicitement le pilote lors de l'initialisation. Voir https://github.com/Microsoft/msphpsql pour plus de détails.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Facultatif : nom de l'application.
	'appname' => 'test',

	// Facultatif.
	// Force Medoo à utiliser le pilote dblib pour MSSQL.
	// Par défaut : sqlsrv.
	'driver' => 'dblib'
]);
Medoo prend également en charge les options de connexion MSSQL lors de l'utilisation du pilote sqlsrv. Voir les détails sur 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',

	// Facultatif : options de connexion 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'
]);

Pour SQLite

Base de données de fichiers
$database = new Medoo([
	'type' => 'sqlite',
	'database' => 'my/database/path/database.db'
]);
Base de données mémoire
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ':memory:'
]);
Base de données temporaire
La base de données temporaire est supprimée lorsque la connexion est fermée.
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ''
]);

// Ou omettez complètement l'option database.
$database = new Medoo([
	'type' => 'sqlite'
]);

Déboguer la chaîne DSN

Vous pouvez inspecter la chaîne DSN finale en appelant 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

Mode Test

Ce mode est utile pour les tests. Vous pouvez vérifier SQL généré via $database->queryString sur différents types de bases de données. Les requêtes sont générées mais non exécutées.
$database = new Medoo([
	'testMode' => true
]);

// Définissez le type de base de données.
$database->type = 'mysql';

$database->select("account", ["user_name"], ["user_id[>]" => 10]);

echo $database->queryString;