89bsilva/my-database

用于MySQL数据库连接和简单操作的包装器

v0.5.0 2020-10-26 19:33 UTC

This package is auto-updated.

Last update: 2024-09-27 06:12:48 UTC


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 文件。