IT Italiano
Versione: v2.3.0

Inizia

Iniziare con Medoo è semplice.

Requisiti

Elenco delle estensioni PHP PDO

L'elenco seguente mostra quale estensione PDO installare in base al tipo di database e alla piattaforma.
Nome Driver
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 Installazione del driver

Medoo richiede PHP con supporto PDO. Se PDO non è ancora installato, attenersi alla seguente procedura.
// Modifica php.ini e rimuovi il punto e virgola iniziale dall'estensione del database che vuoi abilitare.

// .dll si usa su Windows. .so si usa su Linux/UNIX.

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

// Dopo
extension=php_pdo_mysql.dll
extension=php_pdo_mysql.so

// Salva il file, quindi riavvia PHP o Apache/Nginx.

// Se PDO è installato correttamente, comparirà in phpinfo().
Oppure installa dal terminale. L'estensione PDO verrà abilitata e configurata automaticamente.
$ sudo apt-get install php7.4-mysql

Installazione con Composer

Se utilizzi Composer, installa Medoo con il seguente comando.
$ composer require catfan/medoo
Composer installa automaticamente la dipendenza. Esegui composer update solo se è necessario aggiornare manualmente le dipendenze.
$ composer update

Installazione manuale

Una semplice alternativa è scaricare medoo.php, inserirlo nel progetto e includerlo con require.
require 'Medoo.php';

Configurazione

Passa un array di configurazione per inizializzare Medoo e avviare una connessione al database.
// Carica l'autoloader di Composer.
require 'vendor/autoload.php';

// Importa il namespace di Medoo.
use Medoo\Medoo;

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

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

	// Facoltativo: prefisso delle tabelle. Tutti i nomi delle tabelle diventeranno PREFIX_table.
	'prefix' => 'PREFIX_',

	// Facoltativo: abilita il logging. Per impostazione predefinita è disattivato per migliorare le prestazioni.
	'logging' => true,

	// Facoltativo.
	// Modalità di gestione degli errori.
	// Definisce come PDO segnala gli errori.
	// PDO::ERRMODE_SILENT (predefinito) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	// Riferimento: https://www.php.net/manual/en/pdo.error-handling.php.
	'error' => PDO::ERRMODE_SILENT,

	// Facoltativo.
	// Opzioni del driver per la connessione.
	// Riferimento: https://www.php.net/manual/en/pdo.setattribute.php.
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// Facoltativo: comandi da eseguire dopo che la connessione al database è stata stabilita.
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

Connessione DSN personalizzata

È inoltre possibile fornire un DSN personalizzato per connettere i database che Medoo non supporta immediatamente o per passare parametri DSN aggiuntivi.
Formato della stringa di connessione DSN
{driver}:{chiave}={valore};{chiave}={valore}
$database = new Medoo([
	'dsn' => [
		// Nome del driver PDO usato nel DSN.
		'driver' => 'mydb',
		// Parametri DSN come coppie chiave-valore.
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// Facoltativo: indica a Medoo quale comportamento specifico del database utilizzare.
	'type' => 'mysql',

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

// Stringa DSN finale generata:
mydb:server=12.23.34.45;port=8886

Inizializzazione da un oggetto PDO

È inoltre possibile creare Medoo da un oggetto PDO inizializzato esistente.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');

$database = new Medoo([
	// Riutilizza un'istanza PDO già inizializzata e connessa.
	'pdo' => $pdo,

	// Facoltativo: indica a Medoo quale comportamento specifico del database utilizzare.
	'type' => 'mysql'
]);

Per MySQL

Questa opzione è solo per MySQL.
$database = new Medoo([
	// Facoltativo: socket MySQL. Non usarlo insieme a server e port.
	'socket' => '/tmp/mysql.sock',
]);

Per MariaDB

MariaDB viene gestito allo stesso modo di MySQL. Il tipo di database viene mappato automaticamente su mysql.
$database = new Medoo([
	'type' => 'mariadb',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',
]);

Per MSSQL

Le connessioni MSSQL moderne in genere utilizzano l'estensione pdo_sqlsrv sia su Windows che su Linux/UNIX. Medoo utilizza il driver pdo_sqlsrv per impostazione predefinita. Per ambienti legacy che richiedono pdo_dblib, impostare esplicitamente il driver durante l'inizializzazione. Vedi https://github.com/Microsoft/msphpsql per i dettagli.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Facoltativo: nome dell'applicazione.
	'appname' => 'test',

	// Facoltativo.
	// Forza Medoo a usare il driver dblib per MSSQL.
	// Predefinito: sqlsrv.
	'driver' => 'dblib'
]);
Medoo supporta anche le opzioni di connessione MSSQL quando si utilizza il driver sqlsrv. Visualizza i dettagli all'indirizzo 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',

	// Facoltativo: opzioni di connessione 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'
]);

Per SQLite

Banca dati dei file
$database = new Medoo([
	'type' => 'sqlite',
	'database' => 'my/database/path/database.db'
]);
Banca dati della memoria
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ':memory:'
]);
Banca dati temporanea
Il database temporaneo viene eliminato quando la connessione viene chiusa.
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ''
]);

// Oppure ometti del tutto l'opzione database.
$database = new Medoo([
	'type' => 'sqlite'
]);

Verifica della stringa DSN

Puoi controllare la stringa DSN finale chiamando 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

Modalità di prova

Questa modalità è utile per i test. È possibile verificare i valori generati da SQL a $database->queryString su diversi tipi di database. Le query vengono generate ma non eseguite.
$database = new Medoo([
	'testMode' => true
]);

// Imposta il tipo di database.
$database->type = 'mysql';

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

echo $database->queryString;