Versione: v2.3.0
Inizia
Iniziare con Medoo è semplice.
Requisiti
- PHP 7.3+ con estensione PDO installata.
- Un database SQL come MySQL, MSSQL, SQLite o un altro motore supportato.
- Assicurati che il driver PDO corrispondente sia installato e abilitato.
- Conoscenza di base di SQL.
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.
- Intento dell'applicazione
- AllegaNomeFileDB
- Autenticazione
- Crittografia delle colonne
- Pool di connessione
- Crittografare
- Failover_Partner
- Autenticazione KeyStore
- KeyStorePrincipalId
- KeyStoreSecret
- LoginTimeout
- Set di risultati attivi multipli
- Failover multisottorete
- Scorrevole
- TraceFile
- TraceOn
- Isolamento delle transazioni
- RisoluzioneIPReteTrasparente
- TrustServerCertificato
- WSID
$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;