- 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_name
e $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","foobar@yahoo.com")); |
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.