89bsilva / my-database
用于MySQL数据库连接和简单操作的包装器
Requires
- php: ^7.2
README
MyDatabase是一个用PHP开发的工具,用于在MySQL数据库上执行非常简单的操作
安装
$ composer require 89bsilva/my-database
第一步
导入composer的autoload
<?php require './vendor/autoload.php';
创建MyDatabase对象
实例化类时,您必须传递两个参数
<?php $primeiroParametro = Array( [0] => "enderecoServidor" // Obrigatório [1] => "numeroDaPorta" // Obrigatório ); # ou $primeiroParametro = (string) "enderecoServidor"; //Nesse caso o número da porta será 3306.
<?php $segundoParametro = Array( [0] => "nomeDoBanco" // Obrigatório [1] => "usuario" // Obrigatório [2] => "senha" // Opcional - Valor Padrão : "" [3] => "charset" // Opcional - Valor Padrão : "utf8" [4] => "collation" // Opcional - Valor Padrão : "general_ci" [5] => "engine" // Opcional - Valor Padrão : "InnoDB" );
示例
在服务器上创建连接: "localhost",端口: "3308",数据库: "loja",用户: "admin",密码: "123",字符集: "utf8mb4",校对: "unicode_ci" 和引擎: "MyISAM"
<?php $db = new MyDatabase( Array( "localhost", "3308" ), Array( "loja", "admin", "123", "utf8mb4", "unicode_ci", "MyISAM" ) );
在服务器上创建连接: "localhost",端口: "3306",数据库: "loja",用户: "admin",密码: "",字符集: "utf8",校对: "general_ci" 和引擎: "InnoDB"
<?php $db = new MyDatabase( "localhost", Array( "loja", "admin" ) );
MyDatabase
MyDatabase类的函数
table($tabela)
@param string $tabela 想要修改的表的名称 @return Table类的对象
insert($dados)
@param array $dados 将被插入的数据 @return Insert类的对象
select($coluna [, $coluna, $...])
@param string $coluna 要选择的列的声明 @return Select类的对象
update($tabela)
@param string $tabela 包含要更新的记录的表的名称 @return Update类的对象
delete($tabela)
@param string $tabela 包含要删除的记录的表的名称 @return Delete类的对象
Table
Table类的函数
addColumn($coluna)
@param string $coluna 将要添加的列的名称 @return 当前对象
dropColumn($coluna)
@param string $coluna 将要删除的列的名称 @return bool true 如果删除了列 false 否则
changeColumn($coluna, $novoNome)
@param string $coluna 将要修改的列的名称 @param string $novoNome (可选) 将要修改的列的新名称 @return 当前对象
showColumn($coluna)
@param string $coluna 要获取信息的列的名称 @return array
<?php // Caso a tabela ou a coluna não exista na tabela um array vazio será retornado // Se a coluna existir será retornado um array com as informações dessa coluna array( 'Field' =>'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' );
showColumns()
@return array
<?php // Caso não exista a tabela um array vazio será retornado // Se a tabela existir será retornado um array com as informações de todas as colunas dessa tabela array( 0 => array( 'Field' => 'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' ), 1 => array( 'Field' => 'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' ), 2 => array( 'Field' => 'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' ), ... );
int($tamanho)
@param int $tamanho 列的最大长度 @return 当前对象 注意: addColumn() 或 changeColumn() 必须在调用此方法之前调用,为将要添加或修改的列定义类型:INT 和长度:$tamanho
bool()
@return 当前对象 注意: addColumn() 或 changeColumn() 必须在调用此方法之前调用,为将要添加或修改的列定义类型:TINYINT 和长度:1
float($precisao)
参数 int|string $precisao Float 类型存储的精度 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:FLOAT 和精度:$precisao
double($precisao)
参数 int|string $precisao Double 类型存储的精度 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:DOUBLE 和精度:$precisao
text()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:TEXT
mediumtext()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:MEDIUMTEXT
longtext()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:LONGTEXT
varchar($tamanho)
参数 int $tamanho 列的最大长度 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:VARCHAR 和长度:$tamanho
timestamp()
参数 int $tamanho 列的最大长度 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,为将要添加或更改的列设置类型:TIMESTAMP
addTimes($ptBR)
参数 bool $ptBR (可选) 如果为 true,列名将为 (criado_em, atualizado_em) 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,向表中添加两个类型为 timestamp 的列 (created_at, updated_at)。这些列的默认值为 CURRENT_TIMESTAMP。当表被更新时,updated_at 列将自动更新为 CURRENT_TIMESTAMP
default($valorPadrao)
参数 int|string $valorPadrao 将要创建/更改的列的默认值 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法
after($coluna)
参数 int|string $coluna 前面要添加或移动的新列的名称 返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法
autoIncrement()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,定义将要添加/更改的列将自动递增。
notNull()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,定义将要添加/更改的列的存储值不能为空。
primary()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,定义将要添加/更改的列将是主键。
unique()
返回值 当前对象 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn() 方法,定义将要添加/更改的列的存储值将在表中是唯一的。
create($mostrarDeclaracao)
参数 bool $mostrarDeclaracao (可选,默认值:false) 标识要执行的声明是否将返回到响应中 返回值 数组 注意:必须在调用此方法之前调用 addColumn()
<?php array ( // Lista com a(s) tabela(s) que não foi(ram) criada(s) 'error' => array ( 'nome da tabela com erro' => 'mensagem do erro', 'nome da tabela com erro' => 'mensagem do erro', ... ), // Lista com a(s) tabela(s) que foi(ram) criada(s) 'success' => array ( 'nome da tabela criada' => 'mensagem', 'nome da tabela criada' => 'mensagem', ... ), // Só existirá esse índice se $mostrarDeclaracao = true 'statement' => array ( 'nome da tabela' => 'declaração SQL', 'nome da tabela' => 'declaração SQL', ... ), );
alter($mostrarDeclaracao)
参数 bool $mostrarDeclaracao (可选,默认值:false) 标识要执行的声明是否将返回到响应中 返回值 数组 注意:必须在调用此方法之前调用 addColumn() 或 changeColumn()
<?php array ( // Lista com a(s) tabela(s) que não foi(ram) criada(s) 'error' => array ( 'nome da tabela com erro' => array( 'nome da coluna' => 'mensagem do erro', 'nome da coluna' => 'mensagem do erro', ... ), 'nome da tabela com erro' => array( 'nome da coluna' => 'mensagem do erro', 'nome da coluna' => 'mensagem do erro', ... ), ... ), // Lista com a(s) tabela(s) que foi(ram) criada(s) 'success' => array ( 'nome da tabela alterada' => array( 'nome da coluna' => 'mensagem', 'nome da coluna' => 'mensagem', ... ), 'nome da tabela alterada' => array( 'nome da coluna' => 'mensagem', 'nome da coluna' => 'mensagem', ... ), ... ), // Só existirá esse índice se $mostrarDeclaracao = true 'statement' => array ( 'nome da tabela' => array( 'nome da coluna' => 'declaração SQL', 'nome da coluna' => 'declaração SQL', ... ), 'nome da tabela' => array( 'nome da coluna' => 'declaração SQL', 'nome da coluna' => 'declaração SQL', ... ), ... ), );
drop()
@return bool 删除表
clean()
@return bool 移除表中的所有记录
示例
- 创建表: "cliente" 包含
- 列: id,类型: int,长度: 11,不能为空,自动递增且为主键
- 列: nome,类型: varchar,长度: 25 且不能为空
- 列: cidade,类型: varchar,长度: 25 且不能为空
- 列: CPF,类型: int,长度: 11,不能为空且唯一
- 列: preferencial,类型: tinyint,长度: 1,可为空且默认值 0
<?php $tbCliente = $db->table("cliente") ->addColumn("id")->int(11)->notNull()->autoIncrement()->primary() ->addColumn("nome")->varchar(25)->notNull() ->addColumn("cidade")->varchar(25)->notNull() ->addColumn("CPF")->varchar(11)->notNull()->unique() ->addColumn("preferencial")->bool()->default(0) ->create(true); // Valor em $tbClientte em caso de sucesso array ( 'error' => array (), 'success' => array ('cliente' => "The 'cliente' table was created successfully!!!"), 'statement' => array ( 'cliente' => "USE `loja`; CREATE TABLE IF NOT EXISTS `loja`.`cliente` (`id` int(11) AUTO_INCREMENT NOT NULL, `nome` varchar(25) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL, `cidade` varchar(25) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL, `CPF` varchar(11) NOT NULL, `preferencial` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), UNIQUE INDEX `CPF_UNIQUE` (`CPF` ASC)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;", ), );
- 创建表: "produto" 包含
- 列: id,类型: int,长度: 11,不能为空,自动递增且为主键
- 列: codigo,类型: int,长度: 11,不能为空且唯一
- 列: descricao,类型: varchar,长度: 100 且不能为空
- 列: preco,类型: float,精度: 7,2,不能为空
- 列: quantidade,类型: int,长度: 11 且不能为空
- 列: criado_em,类型: timestamp,默认值:当前时间戳
- 列: atualizado_em,类型: timestamp,默认值:当前时间戳
- 创建表: "usuario" 包含
- 列: id,类型: int,长度: 11,不能为空,自动递增且为主键
- 列: nome,类型: varchar,长度: 25 且不能为空
- 列: email,类型: varchar,长度: 50,不能为空且唯一
- 列: ativo,类型: tinyint,长度: 1,可为空且默认值 1
<?php $criar = $db->table("produto") ->addColumn("id")->int(11)->notNull()->autoIncrement()->primary() ->addColumn("codigo")->int(11)->notNull()->unique() ->addColumn("descricao")->varchar(100)->notNull() ->addColumn("preco")->float("7,2")->notNull() ->addColumn("quantidade")->int(11)->notNull() ->addTimes(true) // TRUE passado para criar as colunas criado_em e atualizado_em ->table("usuario") ->addColumn("id")->int(11)->notNull()->autoIncrement()->primary() ->addColumn("nome")->varchar(25)->notNull() ->addColumn("emil")->varchar(50)->notNull()->unique() ->addColumn("ativo")->bool()->default(1) ->create(); // Valor em $criar em caso de sucesso array ( 'error' => array (), 'success' => array ( 'produto' => "The 'produto' table was created successfully!!!", 'usuario' => "The 'usuario' table was created successfully!!!", ) );
在 usuario 表中进行修改:将列名 emil 修改为 email,将其长度从 varchar(50) 修改为 varchar(100),并在 email 列之后添加列: senha,类型: varchar,长度: 10,不能为空
$alteracao = $db->table("usuario")->changeColumn("emil", "email")->varchar(100) ->addColumn("senha")->varchar(10)->notNull()->after("email") ->alter(true); // Valor em $alteracao em caso de sucesso array ( 'error' => array (), 'success' => array ( 'usuario' => array( "email" => "The 'email' column was changed successfully!!!", "senha" => "The 'senha' column was added successfully!!!" ) ), 'statement' => array ( 'usuario' => array( "email" => "ALTER TABLE `usuario` CHANGE `emil` `email` varchar(100) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL, DROP INDEX `emil_UNIQUE`, ADD UNIQUE INDEX `email_UNIQUE` (`email` ASC)", "senha" => "ALTER TABLE `usuario` ADD `senha` varchar(10) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL AFTER `email`" ) ), );
删除表: "usuario"
<?php $deletado = $db->table("usuario")->drop(); // Valor em $deletado em caso de sucesso true
Insert
into($tabela)
@param string $tabela 要插入数据的表名 @return 当前对象
execute()
@return int 插入的记录数
示例
在 "cliente" 表中登记 一个 客户
<?php $cliente = Array( "nome" => "Nome do Vendedor", "cidade" => "São Paulo", "CPF" => "12345678900" ); $resposta = $db->insert($cliente)->into("cliente")->execute(); // Valor em $resposta em caso de sucesso 1
在 "produto" 表中登记 三个 产品
<?php $produtos = Array( Array( "codigo" => 123456, "descricao" => "Teclado", "preco" => 59.99, "quantidade" => 5 ), Array( "codigo" => 234567, "descricao" => "Monitor", "preco" => 199.90, "quantidade" => 2 ), Array( "codigo" => 890123, "descricao" => "Mouse", "preco" => 45.50, "quantidade" => 5 ) ); $resposta = $db->insert($produtos)->into("produto")->execute(); // Valor em $resposta em caso de sucesso 2
Select
from($tabela)
@param string $tabela 要查询的表 @return 当前对象
from($tabela)
@param string $tabela 要查询的表 @return 当前对象
where($coluna)
@param string $coluna 用于比较的列 @return 当前对象 查看如何构建 WHERE 子句
limit($limite, $deslocamento)
@param int $limite 查询限制 @param int $deslocamento 查询起始位置 @return 当前对象 注意:如果在执行查询之前没有调用此方法,则默认限制为 100,起始位置为 0
order($coluna, $ordenar)
@param string $coluna 要排序的列名 @param string $ordenar 排序方向(默认:ASC) @return 当前对象
execute()
@return Array 执行 select,返回 SELECT 的记录列表或空数组
示例
在 "produto" 表中搜索所有产品数据,其中 数量 大于等于 1 且 价格 小于 R$60,并按 价格 排序
<?php $produtos = $db->select("*")->from("produto")->where("quantidade")->biggerEqual(1)->and("preco")->less(60)->order("preco")->limit(0)->execute(); // Valor em $produtos em caso de sucesso Array( 0 => Array( "id" => "2", "codigo" => "890123", "descricao" => "Mouse", "preco" => "45.50", "quantidade" => "5", "criado_em" => "2020-05-19 11:02:53", "atualizado_em" => "2020-05-19 11:02:53", ), 0 => Array( "id" => "1", "codigo" => "123456", "descricao" => "Teclado", "preco" => "59.99", "quantidade" => "5", "criado_em" => "2020-05-19 11:02:53", "atualizado_em" => "2020-05-19 11:02:53", ) );
在 "cliente" 表中搜索来自 圣保罗 的客户的 名称。最多 100 条记录(默认限制)。
<?php $clientes = $db->select("nome")->from("cliente")->where("cidade")->equals("São Paulo")->execute(); // Valor em $clientes em caso de sucesso Array( 0 => Array("nome" => "Nome do Vendedor") );
UPDATE
set($dadosAtualizados)
@param array $dadosAtualizados 包含将要更新的数据的关联数组 @return 当前对象
where($coluna)
@param string $coluna 用于比较的列 @return 当前对象 查看如何构建 WHERE 子句
limit($limite, $deslocamento)
@param int $limite 更新限制 @param int $deslocamento 更新开始位置 @return 当前对象 注意:如果在执行更新之前没有调用此方法,则默认限制为1,查询开始位置为0
execute()
@return int 返回受更新影响的行数
示例
更新“产品”表中的“产品”数量,其“代码”等于“123456”为“4
<?php $novoValor = Array("quantidade" => 4); $atualizacao = $db->update("produto")->set($novoValor)->where("codigo")->equals(123456)->execute(); // Valor em $atualizacao em caso de sucesso 1
DELETE
where($coluna)
@param string $coluna 用于比较的列 @return 当前对象 查看如何构建 WHERE 子句
limit($limite, $deslocamento)
@param int $limite 删除限制 @param int $deslocamento 删除开始位置 @return 当前对象 注意:如果在执行删除之前没有调用此方法,则默认限制为1,查询开始位置为0
execute()
@return int 返回受删除影响的行数
示例
在“产品”表中删除代码等于“234567”的产品
<?php $exclusao = $db->delete("produto")->where("codigo")->equals(234567)->execute(); // Valor em $exclusao em caso de sucesso 1
WHERE
where($coluna)
@param string $coluna 用于比较的列 @return 当前对象
between($valor1, $valor2)
@param string | int $valor1 区间第一个值 @param string | int $valor2 区间第二个值 @return 当前对象 注意:必须在调用此方法之前调用 where()
notBetween($valor1, $valor2)
@param string | int $valor1 区间第一个值 @param string | int $valor2 区间第二个值 @return 当前对象 注意:必须在调用此方法之前调用 where()
equals($valor)
@param string | int $valor 使用运算符 = 进行比较的值 @return 当前对象 注意:必须在调用此方法之前调用 where()
notEquals($valor)
@param string | int $valor 使用运算符 != 进行比较的值 @return 当前对象 注意:必须在调用此方法之前调用 where()
different($valor)
@param string | int $valor 使用运算符 <> 进行比较的值 @return 当前对象 注意:必须在调用此方法之前调用 where()
less($valor)
@param string | int $valor 使用运算符 < 进行比较的值 @return 当前对象 注意:必须在调用此方法之前调用 where()
lessEqual($valor)
@param string | int $valor 使用运算符 <= 进行比较的值 @return 当前对象 注意:必须在调用此方法之前调用 where()
bigger($valor)
@param string | int $valor 使用运算符 > 进行比较的值 @return 当前对象 注意:必须在调用此方法之前调用 where()
in($lista)
@param array $lista 将要比较的值 @return 当前对象 这是多个 OR 条件的缩写,目的是值在列表中
注意:必须在调用此方法之前调用 where()
notIn($lista)
@param array $lista 将要比较的值 @return 当前对象 这是多个 OR 条件的缩写,目的是值不在列表中
注意:必须在调用此方法之前调用 where()
isNull()
@return 当前对象 目标为值 NULL 的记录
注意:必须在调用此方法之前调用 where()
isNotNull()
@return 当前对象 目标为值非 NULL 的记录
注意:必须在调用此方法之前调用 where()
like($valor)
@param string $valor 使用通配符 "%" 在前后进行比较的值: "%$valor%" @return 当前对象 注意:必须在调用此方法之前调用 where()
likeStart($valor)
参数 string $valor 要使用的通配符 "%" 进行比较的值:"$valor%" 返回 当前对象 注:必须在调用此方法之前调用 where()
likeEnd($valor)
参数 string $valor 要使用的通配符 "%" 在值之前进行比较:"%$valor" 返回 当前对象 注:必须在调用此方法之前调用 where()
likeStartEnd($valor1, $valor2)
参数 string $valor1 比较的第一个值 参数 string $valor2 比较的第二个值 返回 当前对象 比较将在 "$valor1%$valor2" 之间使用通配符 "%" 进行: A 比较将使用通配符 "%" 在 valor1 和 valor2 之间进行 注:必须在调用此方法之前调用 where()
and($coluna)
参数 string $coluna 新条件列 返回 当前对象 使用 AND 操作符开始新的比较条件 注:必须在调用此方法之前调用 where() 和比较方法 "between(), notBetween(), equals(), ..."
or($coluna)
参数 string $coluna 新条件列 返回 当前对象 使用 OR 操作符开始新的比较条件 注:必须在调用此方法之前调用 where() 和比较方法 "between(), notBetween(), equals(), ..."
作者
布鲁诺·席尔瓦·桑塔纳 - ibrunosilvas@gmail.com - https://github.com/ibrunosilvas
许可
MyDatabase 依据 MIT 许可证授权 - 更多详情请参阅 LICENSE
文件。