Versão: v2.3.0
Comece
Começar com Medoo é simples.
Requisitos
- PHP 7.3+ com extensão PDO instalada.
- Um banco de dados SQL, como MySQL, MSSQL, SQLite ou outro mecanismo compatível.
- Certifique-se de que o driver PDO correspondente esteja instalado e ativado.
- Conhecimento básico de SQL.
PHP PDO Lista de extensões
A lista a seguir mostra qual extensão PDO instalar com base no tipo e plataforma do seu banco de dados.
| 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 |
Instalação do driver PDO do PHP
Medoo requer PHP com suporte PDO. Se PDO ainda não estiver instalado, siga estas etapas.
// Edite o php.ini e remova o ponto e vírgula inicial da extensão de banco de dados que deseja habilitar. // .dll é usado no Windows. .so é usado no Linux/UNIX. // Antes ;extension=php_pdo_mysql.dll ;extension=php_pdo_mysql.so // Depois extension=php_pdo_mysql.dll extension=php_pdo_mysql.so // Salve o arquivo e reinicie o PHP ou o Apache/Nginx. // Se o PDO estiver instalado corretamente, ele aparecerá em phpinfo().
Ou instale a partir do terminal. A extensão PDO será habilitada e configurada automaticamente.
$ sudo apt-get install php7.4-mysql
Instalação com Composer
Se você usar Composer, instale Medoo com o seguinte comando.
$ composer require catfan/medoo
Composer instala a dependência automaticamente. Execute
composer update somente se precisar atualizar as dependências manualmente.
$ composer update
Instalação manual
Uma alternativa simples é baixar
medoo.php, colocá-lo em seu projeto e incluí-lo com require.require 'Medoo.php';
Configuração
Passe um array de configuração para inicializar Medoo e iniciar uma conexão com o banco de dados.
// Carregue o autoloader do Composer. require 'vendor/autoload.php'; // Importe o namespace do Medoo. use Medoo\Medoo; $database = new Medoo([ // Obrigatório. 'type' => 'mysql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // Opcional. 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_general_ci', 'port' => 3306, // Opcional: prefixo de tabela. Todos os nomes de tabela passarão a ser PREFIX_table. 'prefix' => 'PREFIX_', // Opcional: habilita o log. Fica desativado por padrão para melhor desempenho. 'logging' => true, // Opcional. // Modo de erro. // Define como o PDO relata erros. // PDO::ERRMODE_SILENT (padrão) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION // Referência: https://www.php.net/manual/en/pdo.error-handling.php. 'error' => PDO::ERRMODE_SILENT, // Opcional. // Opções do driver para a conexão. // Referência: https://www.php.net/manual/en/pdo.setattribute.php. 'option' => [ PDO::ATTR_CASE => PDO::CASE_NATURAL ], // Opcional: comandos a executar depois que a conexão com o banco for estabelecida. 'command' => [ 'SET SQL_MODE=ANSI_QUOTES' ] ]);
Conexão DSN personalizada
Você também pode fornecer um DSN personalizado para conectar bancos de dados que Medoo não suporta imediatamente ou para passar parâmetros DSN adicionais.
Formato de cadeia de conexão DSN
{driver}:{chave}={valor};{chave}={valor}
$database = new Medoo([ 'dsn' => [ // Nome do driver PDO usado no DSN. 'driver' => 'mydb', // Parâmetros DSN como pares chave-valor. 'server' => '12.23.34.45', 'port' => '8886' ], // Opcional: informa ao Medoo qual comportamento específico do banco deve ser usado. 'type' => 'mysql', 'username' => 'your_username', 'password' => 'your_password' ]); // String DSN final gerada: mydb:server=12.23.34.45;port=8886
Inicialização a partir de um objeto PDO
Você também pode criar Medoo a partir de um objeto PDO inicializado existente.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');
$database = new Medoo([
// Reutiliza uma instância de PDO já inicializada e conectada.
'pdo' => $pdo,
// Opcional: informa ao Medoo qual comportamento específico do banco deve ser usado.
'type' => 'mysql'
]);
Para MySQL
Esta opção é apenas para MySQL.
$database = new Medoo([ // Opcional: socket do MySQL. Não use junto com server e port. 'socket' => '/tmp/mysql.sock', ]);
Para MariaDB
MariaDB é tratado da mesma forma que MySQL. O tipo de banco de dados é mapeado para
mysql automaticamente.$database = new Medoo([ 'type' => 'mariadb', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', ]);
Para MSSQL
Conexões MSSQL modernas normalmente usam a extensão pdo_sqlsrv no Windows e no Linux/UNIX. Medoo usa o driver pdo_sqlsrv por padrão. Para ambientes legados que exigem pdo_dblib, defina o driver explicitamente durante a inicialização. Consulte https://github.com/Microsoft/msphpsql para obter detalhes.
$database = new Medoo([ 'type' => 'mssql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // Opcional: nome da aplicação. 'appname' => 'test', // Opcional. // Força o Medoo a usar o driver dblib para MSSQL. // Padrão: sqlsrv. 'driver' => 'dblib' ]);
Medoo também suporta opções de conexão MSSQL ao usar o driver sqlsrv. Veja detalhes em 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: opções de conexão 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
Banco de dados de arquivos
$database = new Medoo([ 'type' => 'sqlite', 'database' => 'my/database/path/database.db' ]);
Banco de dados de memória
$database = new Medoo([ 'type' => 'sqlite', 'database' => ':memory:' ]);
Banco de dados temporário
O banco de dados temporário é excluído quando a conexão é encerrada.
$database = new Medoo([ 'type' => 'sqlite', 'database' => '' ]); // Ou simplesmente omita a opcao database. $database = new Medoo([ 'type' => 'sqlite' ]);
Depurar sequência de DSN
Você pode inspecionar a string DSN final chamando
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 teste
Este modo é útil para testes. Você pode verificar SQL gerado por meio de
$database->queryString em diferentes tipos de banco de dados. As consultas são geradas, mas não executadas.$database = new Medoo([
'testMode' => true
]);
// Defina o tipo de banco de dados.
$database->type = 'mysql';
$database->select("account", ["user_name"], ["user_id[>]" => 10]);
echo $database->queryString;