Baixe o app para aproveitar ainda mais
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
Compartilhar