Buscar

PWII MySQL 3 Conexao com BD

Prévia do material em texto

Programação WebII
PHP e MySQL –
Conexão com o Banco de 
Dados 
Prof. Marcos Fonseca
Conexão – MySQLi X PDO
• O mysqli é uma extensão do próprio PHP para conectar ao banco
MySQL, e tem uma proximidade do código nativo, sendo mais rápida 
do que a PDO;
• PDO é uma API para conexão de bancos de dados, não limitada ao
• MySQL, que abstrair alguns conceitos com código PHP tornando esta 
abordagem mais lenta;
• Ambas as formas podem ser utilizadas da forma orientada a objetos;
Prof. Marcos Fonseca
Conectando com mysqli
• Para conectar ao MySQL com o mysqli, é preciso utilizar a função 
mysqli_connect;
• Passar os parâmetros de: host, usuário, senha e banco de dados;
• Com a conexão feita podemos utilizar as queries;
• Exemplo:
$conn = new mysqli(“host”, “user”, “pass”, “db”);
Prof. Marcos Fonseca
Conexão do PHP com o BD
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
Prof. Marcos Fonseca
Chegando a conexão
• Para verificar se houve algum erro na conexão podemos utilizar a 
propriedade connect_errno;
• E para verificar o erro podemos utilizar o método connect_error()
• Podemos inserir a checagem em um if e mostrar a mensagem de erro 
com um echo, por exemplo;
Prof. Marcos Fonseca
https://w
w
w
.php.net/m
anual/pt_BR/m
ysqli.
connect-errno.php
Erro de Conexão do PHP com o BD
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursophp";
$conn = new mysqli($host, $user, $pass, $db);
if($conn->connect_errno) {
echo "Erro na conexão! <br>";
echo "Erro: " . $conn->connect_error;
}
Prof. Marcos Fonseca
<?php
$host = "localhost";
$user = "root";
$pass = “asd";
$db = "cursophp";
$conn = new mysqli($host, $user, $pass, $db);
if($conn->connect_errno) {
echo "Erro na conexão! <br>";
echo "Erro: " . $conn->connect_error;
}
Executando uma Query
• Para executar uma query deve-se usar o método query;
• Deve ser utilizado a partir do objeto que fez a conexão;
• Vamos receber um determinado retorno como resultado, que podem 
ser os dados, caso seja um SELECT, por exemplo;
• É importante ao fim de todas as queries fechar a conexão, com o 
método close;
• Conexões abertas gastam recursos do servidor e prejudicam a 
aplicação;
Prof. Marcos Fonseca
Executando uma Query SELECT
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$sql = "SELECT * FROM itens";
$result = $conn->query($sql);
print_r($result);
$conn->close();
Prof. Marcos Fonseca
Criando e deletando tabelas com mysqli
• Para criar e deletar tabelas utilizamos os mesmos comandos do SQL, 
porém com o auxílio do método query;
• DROP TABLE para deletar tabelas;
• CREATE TABLE para criar tabelas;
• Lembre de fechar a conexão!
Prof. Marcos Fonseca
Executando uma Query CREATE
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
// $q = "CREATE TABLE teste (nome VARCHAR(100), sobrenome VARCHAR(100))";
$q = "DROP TABLE teste";
$conn->query($q);
$conn->close();
Prof. Marcos Fonseca
Inserindo dados com msqli
• Para inserir dados com o mysqli, utilizamos os mesmos comandos do 
SQL, porém com o auxílio do método query;
• A instrução para inserir dados é a INSERT INTO;
• Devemos passar a tabela, colunas e valores;
Prof. Marcos Fonseca
Executando uma Query de INSERT
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$table = "itens";
$nome = "Xícara";
$descricao = "É uma xícara usada de cor rosa";
$q = "INSERT INTO $table (nome, descricao) VALUES ('$nome', '$descricao')";
$conn->query($q);
$conn->close();
Prof. Marcos Fonseca
Selecionando os dados mysqli
• Para resgatar dados com o mysqli utilizamos os mesmos comandos do 
SQL, porém com o auxílio do método query;
• A instrução para selecionar os dados é a SELECT;
• Vamos inserir o método query em uma variável, que é onde 
receberemos os resultados;
• Com o método fetch_assoc, transformamos os resultados em um 
array;
Prof. Marcos Fonseca
Executando uma Query de INSERT
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$q = "SELECT * FROM itens";
$result = $conn->query($q);
$conn->close();
// UM RESULTADO
$item = $result->fetch_assoc();
// TODOS OS RESULTADOS
//$itens = $result->fetch_all();
print_r($item);
Prof. Marcos Fonseca
Prepared statements
• Prepared statements é quando criamos uma query com placeholders
em vez dos valores reais;
• Aumentando a segurança e a performance da requisição;
• Neste caso o fluxo muda um pouco, vamos utilizar o método prepare
para preparar a query;
• O bind_param para resgatar os parâmetros, e o execute para rodar a 
query;
Prof. Marcos Fonseca
https://w
w
w
.php.net/m
anual/pt_BR/m
ys
qli.quickstart.prepared-statem
ents.php
Inserindo dados com Prepared
• Para inserir os dados com prepared statements precisamos;
• prepare => bind_param => execute;
• Como teremos uma variável para guardar estes três passos, também 
devemos fechar a conexão desta variável;
• Comumente chamada de statement; (declaração)
• Lembre-se de fechar a conexão;
Prof. Marcos Fonseca
https://w
w
w
.php.net/m
anual/pt_BR/m
ys
qli-stm
t.bind-param
.php
Executando uma Query de INSERT
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$nome = "Suporte de microfone";
$descricao = "O suporte é novo e foi fabricado na China";
$stmt = $conn->prepare("INSERT INTO itens (nome, descricao) VALUES (?, ?)");
$stmt->bind_param("ss", $nome, $descricao); // s = string, i = integer, d = double
$stmt->execute();
Prof. Marcos Fonseca
Selecionando dados com Prepared
• Para selecionar dados com prepared statements devemos resgatar os 
dados com o método fetch_all;
• A sequência será: 
• prepare => bind_param => execute => get_result =>fetch_all;
• E depois devemos fechar a conexão;
Prof. Marcos Fonseca
Executando uma Query de SELECT
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$id = 4;
$stmt = $conn->prepare("SELECT * FROM itens WHERE id > ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_all();
print_r($data);
Prof. Marcos Fonseca
Resgatando apenas 1 linha
• Para os selects que precisamos de apenas um dado retornado, 
podemos utilizar o fetch_row;
• Este método pode ser inserido depois de obter o resultado, ou seja, 
após o get_result;
Prof. Marcos Fonseca
https://w
w
w
.php.net/m
anual/pt_BR/m
ys
qli-result.fetch-row
.php
Executando uma Query de SELECT
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$id = 2;
$stmt = $conn->prepare("SELECT * FROM itens WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$item = $result->fetch_row();
print_r($item);
$conn->close();
Prof. Marcos Fonseca
Atualizando dados com prepared
• Para atualizar dados vamos seguir os mesmos passos de INSERT e 
SELECT;
• Na hora de inserir o SET para atualizar os campos, vamos inserir os 
prepared statements;
• Sequência: prepare => bind_param => execute;
Prof. Marcos Fonseca
Executando uma Query de Atualização
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$id = 4;
$stmt = $conn->prepare("UPDATE itens SET nome = ?, descricao = ? WHERE id = ?");
$nome = "Sofá";
$descricao = "Sofá semi novo, com madeira de demolição";
$stmt->bind_param("ssi", $nome, $descricao, $id);
$stmt->execute();
if($stmt->error) {
echo "Erro: " . $stmt->error;}
Prof. Marcos Fonseca
Deletando dados com prepared
• Para atualizar dados vamos seguir os mesmos passos de INSERT e 
SELECT;
• Na hora de inserir o WHERE para remover os registros, vamos inserir 
os prepared statements;
• Sequência: prepare => bind_param => execute;
• Lembrando que DELETE sem WHERE, causa a remoção de todos os 
registros;
Prof. Marcos Fonseca
Executando uma Query de Atualização
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "cursopwii";
$conn = new mysqli($host, $user, $pass, $db);
// ASSUNTO DA AULA
$nome = "Teste";
$stmt = $conn->prepare("DELETE FROM itens WHERE nome = ?");
$stmt->bind_param("s", $nome);
$stmt->execute();
$conn->close();
Prof. Marcos Fonseca
Habilitando a PDO
• Antes de começar a de fato utilizar a PDO, é necessário checar se a lib
está habilitada;
• Fazer a checagem no php.ini por duas linhas, e “descomentar” 
remover o ; caso estejam:
• php_pdo (possível que não tenha)
• extension=pdo_mysql
• Após, stop e start.
Prof. Marcos Fonseca
Conexão com PDO
• A conexão com PDO é um pouco diferente do mysqli, mas vamos 
informar basicamente os mesmos parâmetros;
• Que são: SGBD, host, nome do banco, usuário e senha;
• Exemplo:
$conn = new PDO(“mysql:host=localhost;dbname=teste”, 
$user, $pass);
Prof. Marcos Fonseca
Conexão com PDO
<?php
$host = "localhost";
$db = "cursopwii";
$user = "root";
$pass = "";
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
Prof. Marcos Fonseca
Inserindo dados com PDO
• Em PDO vamos utilizar uma abordagem parecida com o mysqli;
• Utilizaremos o método prepare para realizar a query com prepared
statements;
• Depois bind_param para estabelecer os valores dos parâmetros;
• Por fim execute fará a execução da query;
$stmt = $con->prepare(“INSERT INTO x(a, b) VALUES(?, ?)”);
Prof. Marcos Fonseca
Inserindo dados com PDO
<?php
$host = "localhost";
$db = "cursopwii";
$user = "root";
$pass = "";
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
// ASSUNTO DA AULA
$stmt = $conn->prepare("INSERT INTO itens (nome, descricao) VALUES (:nome, 
:descricao)");
$nome = "Suporte monitor";
$descricao = "O suporte está novo e na caixa ainda.";
$stmt->bindParam(":nome", $nome);
$stmt->bindParam(":descricao", $descricao);
$stmt->execute();
Prof. Marcos Fonseca
Atualizando dados com PDO
• Para atualizar a abordagem também é parecida;
• Vamos seguir com a sequência: prepare => bind_param => execute
• E então a query persistirá no banco:
$stmt = $con->prepare(“UPDATE x SET a = ?, b = ? WHERE c = ?”)
Prof. Marcos Fonseca
Atualizando dados com PDO
<?php
$host = "localhost";
$db = "cursopwii";
$user = "root";
$pass = "";
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
// ASSUNTO DA AULA
$id = 5;
$nome = "Teclado Microsoft";
$descricao = "Este teclado é novo e está na caixa.";
$stmt = $conn->prepare("UPDATE itens SET nome = :nome, descricao = :descricao WHERE id = :id");
$stmt->bindParam(":id", $id);
$stmt->bindParam(":nome", $nome);
$stmt->bindParam(":descricao", $descricao);
$stmt->execute();
Prof. Marcos Fonseca
Selecionando dados PDO
• Para selecionar dados a abordagem também é parecida com mysqli;
• Vamos seguir com a sequência: prepare => bind_param => execute
• Porém para o resgate dos dados temos dois métodos:
• fetch: recebe apenas a primeira ocorrência;
• fetchAll: recebe todos os dados;
Prof. Marcos Fonseca
Selecionando dados PDO
<?php
$host = "localhost";
$db = "cursopwii";
$user = "root";
$pass = "";
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
// ASSUNTO DA AULA
$id = 5;
$stmt = $conn->prepare("SELECT * FROM itens WHERE id > :id");
$stmt->bindParam(":id", $id);
$stmt->execute();
// $data = $stmt->fetch(PDO::FETCH_ASSOC);
// print_r($data);
$itens = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($itens);
Prof. Marcos Fonseca

Continue navegando