OOP do mundo real com PHP e MySQL

Uma vez que determinamos nossos requisitos, criar a estrutura básica de nossa classe é relativamente simples. Em primeiro lugar, precisamos ter certeza de que podemos fazer nossas operações básicas do MySQL. Para alcançá-lo, precisamos implementar as seguintes funções:

  • selecionar
  • inserir
  • excluir
  • atualizar
  • conectar
  • desconectar

Vamos ver rapidamente como fica nossa definição de classe:

1

2
class Database 
3
{
4
    private $db_host = '';
5
    private $db_user = '';
6
    private $db_pass = '';
7
    private $db_name = '';
8
    private $con = '';
9
    
10
    public function __contruct($db_host, $db_user, $db_pass, $db_name)
11
    {
12
        $this->db_host = $db_host;
13
        $this->db_user = $db_user;
14
        $this->db_pass = $db_pass;
15
        $this->db_name = $db_name;
16
    }
17

18
    public function connect() {}
19
    public function disconnect() {}
20
    public function select() {}
21
    public function insert() {}
22
    public function delete() {}
23
    public function update() {}
24
}

Basicamente é uma classe esqueleto chamada Database que representa uma conexão de banco de dados e fornece métodos para interagir com o banco de dados. Definimos diferentes propriedades privadas como $db_host, $db_user, $db_pass, $db_namee $con. É usado para armazenar os detalhes da conexão do banco de dados e o próprio objeto de conexão.

Na próxima seção, veremos a implementação real dessa classe.

Implemente a classe de banco de dados

Nesta seção, implementaremos métodos necessários para realizar diferentes operações de banco de dados.

O connect Método

Vá em frente e adicione o connect conforme mostrado no trecho a seguir.

1

2

3
public function connect()
4
{
5
    if (!$this->con) {
6
        $this->con = mysqli_connect($this->db_host, $this->db_user, $this->db_pass);
7

8
        if($this->con) {
9
            $seldb = mysqli_select_db($this->con, $this->db_name);
10

11
            if($seldb) {
12
                return true; 
13
            } else {
14
                return false;
15
            }
16
        } else {
17
            return false;
18
        }
19
    } else {
20
        return true;
21
    }
22
}

O propósito do connect O método é estabelecer uma conexão com um banco de dados MySQL usando a extensão mysqli. Primeiramente, verificamos se já existe uma conexão com o banco de dados, e se houver, o método simplesmente retorna true para indicar que a conexão já foi estabelecida e não há necessidade de reconectar. Se não houver conexão, ele tenta se conectar ao banco de dados usando o mysqli_connect função.

Depois que a conexão com o banco de dados for bem-sucedida, ele selecionará o banco de dados chamando o método mysqli_select_db função. Por fim, se a seleção do banco de dados for bem-sucedida, ele retornará true para indicar que a conexão foi estabelecida e o banco de dados está selecionado. Se a conexão ou a seleção do banco de dados falhar, ele retornará false.

O disconnect Método

Vamos passar pelo disconnect método.

1

2

3
public function disconnect() 
4
{
5
    if ($this->con) {
6
        if (mysqli_close($this->con)) {
7
            $this->con = false; 
8
            return true;
9
        } else {
10
            return false;
11
        }
12
    }
13
}

Ele verifica se existe uma conexão de banco de dados ativa e, se houver, ele usa o mysqli_close() função para fechar a conexão e definir o $this->con propriedade para false.

O select Método

É um dos métodos mais importantes que serão usados ​​com frequência. Primeiramente, vamos criar o tableExists método que é usado para verificar se a tabela existe ou não no banco de dados MySQL.

1

2

3
private function tableExists($table) 
4
{
5
    $tablesInDb = mysqli_query($this->con, 'SHOW TABLES FROM '.$this->db_name.' LIKE "'.$table.'"');
6

7
    if($tablesInDb) {
8
        if(mysqli_num_rows($tablesInDb) == 1) {
9
            return true;
10
        } else {
11
            return false;
12
        }
13
    }
14
}

Em seguida, vamos em frente e implementar o select método.

1

2

3
public function select($table, $rows = '*', $where = null, $order = null) 
4
{
5
    $q = 'SELECT '.$rows.' FROM '.$table;
6

7
    if($where != null)
8
        $q .= ' WHERE '.$where;
9

10
    if($order != null)
11
        $q .= ' ORDER BY '.$order;
12

13
    if($this->tableExists($table)) {
14
        $result = $this->con->query($q);
15

16
        if($result) {
17
            $arrResult = $result->fetch_all(MYSQLI_ASSOC);
18

19
            return $arrResult;
20
        } else {
21
            return false;
22
        }
23
    } else {
24
        return false;
25
    }
26
}

É usado para recuperar registros de um banco de dados. Ele primeiro cria uma string de consulta SQL usando os argumentos de entrada. Ele verifica se a tabela especificada existe no banco de dados e, em caso afirmativo, executa a consulta. Se a consulta for bem-sucedida, as linhas resultantes serão buscadas como uma matriz associativa e retornadas. Se a consulta falhar, o método retorna false. Se a tabela especificada não existir no banco de dados, ela também retornará false.

O insert Método

Vamos passar pelo insert conforme mostrado no trecho a seguir.

1

2

3
public function insert($table, $values, $rows = null)
4
{
5
    if ($this->tableExists($table)) {
6
        $insert = 'INSERT INTO '.$table;
7

8
        if ($rows != null) {
9
            $insert .= ' ('.$rows.')';
10
        }
11

12
        for ($i = 0; $i < count($values); $i++) {
13
            $values[$i] = mysqli_real_escape_string($this->con, $values[$i]);
14

15
            if (is_string($values[$i])) {
16
                $values[$i] = '"'.$values[$i].'"';
17
            }
18
        }
19

20
        $values = implode(',', $values);
21
        $insert .= ' VALUES ('.$values.')';
22
        $ins = mysqli_query($this->con, $insert);
23

24
        if ($ins) {
25
            return true;
26
        } else {
27
            return false;
28
        }
29
    }
30
}

Ele é usado para inserir dados em uma tabela em um banco de dados MySQL usando a extensão mysqli. A função recebe três parâmetros: o nome da tabela, os valores a serem inseridos e, opcionalmente, as colunas nas quais inserir. Primeiramente, ele verifica se a tabela especificada existe no banco de dados e, se existir, constrói a consulta SQL para inserir os dados usando os valores e colunas fornecidos. Nós usamos o mysqli_real_escape_string função para sanitizar quaisquer valores de string.

Finalmente, a consulta é executada usando o mysqli_query() função, e a função retorna true se a consulta foi bem-sucedida, false de outra forma.

O delete Método

Vamos passar rapidamente pelo delete método.

1

2

3
public function delete($table, $where = null)
4
{
5
    if ($this->tableExists($table)) {
6
        if ($where == null) {
7
            $delete = 'DELETE '.$table; 
8
        } else {
9
            $delete = 'DELETE FROM '.$table.' WHERE '.$where; 
10
        }
11

12
        $del = $this->con->query($delete);
13

14
        if ($del) {
15
            return true; 
16
        } else {
17
           return false; 
18
        }
19
    } else {
20
        return false; 
21
    }
22
}

Ele é usado para excluir uma tabela ou uma linha de nosso banco de dados.

O update Método

É também um dos métodos importantes que nos permite atualizar as informações do banco de dados.

O update a implementação do método deve ficar assim.

1

2

3
public function update($table, $rows, $where)
4
{
5
    if ($this->tableExists($table)) {
6
        // Parse the where values

7
        // even values (including 0) contain the where rows

8
        // odd values contain the clauses for the row

9
        for ($i = 0; $i < count($where); $i++) {
10
            if ($i % 2 != 0) {
11
                if (is_string($where[$i])) {
12
                    if (($i + 1) != null) {
13
                        $where[$i] = '"' . $where[$i] . '" AND ';
14
                    } else {
15
                        $where[$i] = '"' . $where[$i] . '"';
16
                    }
17
                }
18
            }
19
        }
20

21
        $where = implode('=', $where);
22
        
23
        $update = 'UPDATE ' . $table . ' SET ';
24
        $keys = array_keys($rows);
25
        
26
        $setValues = [];
27
        foreach ($keys as $key) {
28
            $value = $rows[$key];
29
            $setValues[] = "`$key` = '" . mysqli_real_escape_string($this->con, $value)."'";
30
        }
31
        
32
        $update .= implode(',', $setValues);
33
        $update .= ' WHERE ' . $where;
34
        
35
        $query = $this->con->query($update);
36
        
37
        if ($query) {
38
            return true;
39
        } else {
40
            return false;
41
        }
42
    } else {
43
        return false;
44
    }
45
}

O update O método tem três argumentos: $table, $rows e $where. O $where array é então analisado para gerar o SQL WHERE cláusula para a consulta de atualização. O $rows array é analisado para gerar o SQL SET cláusula para a consulta de atualização. As chaves da matriz representam os nomes das colunas, enquanto os valores da matriz representam os novos valores das colunas. Nós usamos o mysqli_real_escape_string função para sanitizar quaisquer valores de string.

Com isso, concluímos a criação dos métodos necessários para a manipulação do banco de dados. Você pode salvá-lo como um banco de dados.php arquivo.

Na próxima seção, veremos como usá-lo.

Como usar o Database Aula

Primeiramente, vamos criar uma tabela MySQL em nosso banco de dados para que possamos testar as operações CRUD nessa tabela.

Vá em frente e execute o seguinte SQL para criar uma tabela.

1
CREATE TABLE `mysqlcrud` (
2
    `id` INT(11) NOT NULL AUTO_INCREMENT,
3
    `name` VARCHAR(255) NOT NULL,
4
    `email` VARCHAR(255) NOT NULL,
5
    PRIMARY KEY (`id`)
6
);

Deve criar o mysqlcrud tabela em seu banco de dados.

Como inserir uma nova linha

Vamos ver como inserir uma nova linha.

1

2
require "Database.php";
3

4
$db = new Database("DB_HOST", "DB_USER", "DB_PASS", "DB_NAME");
5

6
if ($db->connect()) {
7
    $db->insert('mysqlcrud', array(1,"Foo Bar","[email protected]"));
8
} else {
9
    echo "There was some error connecting to the database.";
10
}
11
?>

Em primeiro lugar, criamos um novo Database objeto com as credenciais do banco de dados passadas como parâmetros. Você precisa substituí-lo por suas credenciais. A seguir, o connect método do Database classe é chamada para estabelecer uma conexão com o banco de dados. Se a conexão for bem-sucedida, o insert O método é chamado com o nome da tabela como primeiro parâmetro e uma matriz de valores para a nova linha como segundo parâmetro.

Se tudo correr bem, ele deve criar uma nova linha no mysqlcrud mesa.

Como atualizar uma linha

Vamos ver como funciona a operação de atualização.

1

2
require "Database.php";
3

4
$db = new Database("DB_HOST", "DB_USER", "DB_PASS", "DB_NAME");
5

6
if ($db->connect()) {
7
    $db->update('mysqlcrud',array('name'=>'Updated Foo Bar'), array('id',1));
8
} else {
9
    echo "There was some error connecting to the database.";
10
}
11
?>

Como você pode ver, chamamos o update para atualizar a coluna de nome da linha.

Como excluir uma linha

A seguir, veremos como excluir uma linha específica.

1

2
require "Database.php";
3

4
$db = new Database("DB_HOST", "DB_USER", "DB_PASS", "DB_NAME");
5

6
if ($db->connect()) {
7
    $db->delete('mysqlcrud', "`id` = '1'");
8
} else {
9
    echo "There was some error connecting to the database.";
10
}
11
?>

Ele deve excluir a linha com id igual a 1.

Como recuperar registros

Vamos ver como você pode recuperar todos os registros de nossa tabela.

1
<?php
2
require "Database.php";
3

4
$db = new Database("DB_HOST", "DB_USER", "DB_PASS", "DB_NAME");
5

6
if ($db->connect()) {
7
    $rows = $db->select('mysqlcrud');
8
} else {
9
    echo "There was some error connecting to the database.";
10
}
11
?>

Como você pode ver, o select O método nos permite buscar todos os registros da tabela desejada.

Então é assim que você pode executar operações CRUD usando nossa classe.

[ad_2]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *