• Save
Prog web 05-php-mysql
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Prog web 05-php-mysql

on

  • 734 views

 

Statistics

Views

Total Views
734
Views on SlideShare
734
Embed Views
0

Actions

Likes
3
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Prog web 05-php-mysql Presentation Transcript

  • 1. Programação para WEBRegis Pires Magalhãesregispiresmag@gmail.comPHP e MySQL
  • 2. Opções de acesso Há várias formas de acessar o MySQL: Extensão MySQL É a mais usada atualmente. Excelente performance. Suporta conexões persistentes. Não suporta prepared statements. Extensão MySQLi (Improved / Melhorada) Possui funcionalidades extra como preparedstatements, conjunto de caracteres, codificação etransações. Não suporta conexões persistentes. É possível quesejam habilitadas como padrão na versão 6 do PHP. Possui uma interface procedural e uma interface OO.
  • 3. Opções de acesso Há várias formas de acessar o MySQL: ADOdb Biblioteca bastante completa que padroniza o acesso avários bancos de dados. Acesso semelhante ao ADO da Microsoft, mas roda emoutros sistemas operacionais além do Windows. PEAR PHP Extension and Application Repository Extensa biblioteca com muitas finalidades, inclusiveacesso padronizado a diferentes bancos de dados. PDO – PHP Data Objects Interface que padroniza o acesso a bancos de dados. Embutido no PHP a partir da versão 5.1
  • 4. Conexão com o MySQL mysql_connect Abre uma conexão com um servidor MySQL. mysql_close Fecha uma conexão com um servidor MySQL. Normalmente não é necessário, já que as conexões nãopersistentes são automaticamente fechadas ao final daexecução do script. mysql_error Retorna o texto da mensagem de erro da operação MySQLanterior.
  • 5. Conexão com o MySQL<?php$link = mysql_connect(localhost, root, );if (!$link) {die(Não foi possível conectar: . mysql_error());}echo Conexão bem sucedida;mysql_close($link);?>
  • 6. Seleção de Base de Dados mysql_select_db Seleciona uma base de dados MySQL.<?php$con = mysql_connect(localhost, root, );if (!$con) {die(Não foi possível conectar: . mysql_error());}$base = mysql_select_db(prog_web, $con);if (!$base) {die (Erro ao usar a base: . mysql_error());} else {echo(Base de dados selecionada.);}?>
  • 7. Operações na Base de Dados mysql_query Executa uma consulta ou comando SQL. mysql_fetch_assoc Obtém um linha do resultado como uma matrizassociativa
  • 8. Codificação de Caracteres Algumas dicas para evitar problemas comacentuação de caracteres: Bases de dados, tabelas e campos alfanuméricoscriados no MySQL devem usar codificação utf8 ecollation utf8_general_ci. O HTML gerado deve ter conjunto de caracteresutf-8: Para isso, incluir a seguinte tag meta na tag head:<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> O editor de textos usado deve gravar o arquivo noformato utf-8 (sem BOM – Byte Order Mark).
  • 9. Consulta e Exibição<?php$conexao = mysql_connect(localhost,root,)or die ("Erro ao efetuar conexão.");mysql_select_db("prog_web");mysql_set_charset(utf8);$result = mysql_query("SELECT * FROM pessoas",$conexao)or die (" ERRO na consulta " . mysql_error());?><html><head><meta http-equiv="Content-type" content="text/html; charset=utf-8" /><title>IFPI-PHB</title></head><body><h1>Pessoas</h1><table border="1"><tr><th>Nome</th><th>Fone</th><th>E-Mail</th></tr><?php while($pessoa = mysql_fetch_array($result)) { ?><tr><td><?= $pessoa[nome] ?></td><td><?= $pessoa[fone] ?></td><td><?= $pessoa[email] ?></td></tr><? } ?></table></body></html>
  • 10. Criação de Base de Dados<?php$con = mysql_connect(localhost, root, );if (!$con) {die(Não foi possível conectar: . mysql_error());}$sql = CREATE DATABASE prog_web;if (mysql_query($sql, $con)) {echo A base de dados foi criada;} else {echo Erro ao criar a BD: . mysql_error();}?>
  • 11. CRUD Create - Criar Read / Retrieve – Ler / Obter Update - Atualizar Delete – Apagar / Remover
  • 12. CRUD - Arquivos db_conecta.php Conexão com a base de dados pessoas_lista.php Lista todas as pessoas pessoas_mostra.php pessoas_exclui.php pessoas_insere.php pessoas_form.php Parte do formulário compartilhado porpessoas_insere.php e pessoas_edita.php pessoas_edita.php
  • 13. CRUD - db_conecta.php<?php$conexao = mysql_connect(localhost,root,)or die (Erro ao efetuar conexão.);mysql_select_db(prog_web);mysql_set_charset(utf8);?>
  • 14. CRUD - pessoas_lista.php<?phpinclude_once(db_conecta.php);$result = mysql_query("SELECT * FROM pessoas",$conexao)or die (ERRO na consulta: . mysql_error());?><html><head><meta http-equiv="Content-type" content="text/html; charset=utf-8" /><title>IFPI-PHB</title></head><body><h1>Pessoas - Lista</h1><table border="1"><tr><th>Nome</th><th>Fone</th><th>E-Mail</th><th colspan="3">Ações</th></tr><?php while($pessoa = mysql_fetch_array($result)): ?><tr><td><?= $pessoa[nome] ?></td><td><?= $pessoa[fone] ?></td><td><?= $pessoa[email] ?></td><td><a href="pessoa_mostra.php?id=<?= $pessoa[id] ?>">Mostra</a></td><td><a href="pessoa_edita.php?id=<?= $pessoa[id] ?>">Edita</a></td><td><a href="pessoa_exclui.php?id=<?= $pessoa[id] ?>"onclick="return confirm(Tem certeza?);">Exclui</a></td></tr><?php endwhile; ?></table><p><a href="pessoa_insere.php">Insere</a></p></body></html>
  • 15. CRUD - pessoa_mostra.php<?phpinclude_once(db_conecta.php);$id = $_GET[id];$result = mysql_query("SELECT * FROM pessoas where id=$id",$conexao) or die (ERRO na consulta: . mysql_error());$pessoa = mysql_fetch_array($result);?><html><head><meta http-equiv="Content-type"content="text/html; charset=utf-8" /><title>IFPI-PHB</title></head><body><h1>Pessoas - Mostra</h1><p>Nome: <?= $pessoa[nome] ?></p><p>Telefone: <?= $pessoa[fone] ?></p><p>E-Mail: <?= $pessoa[email] ?></p><p><a href="pessoas_lista.php">Volta</a></p></body></html>
  • 16. CRUD - pessoa_exclui.php<?phpinclude_once(db_conecta.php);$id = $_GET[id];mysql_query("DELETE FROM pessoas where id=$id",$conexao)or die ( ERRO na exclusão: . mysql_error());header(Location: pessoas_lista.php);?>
  • 17. CRUD - pessoa_insere.php<?phpinclude_once(db_conecta.php);$pessoa[nome] = $_POST[nome];$pessoa[fone] = $_POST[fone];$pessoa[email] = $_POST[email];if (strlen(trim($_POST[nome])) > 0) {mysql_query("insert into pessoas (nome,fone,email) values({$pessoa[nome]},{$pessoa[fone]},{$pessoa[email]})")or die(Problema ao realizar operação: . mysql_error());header("Location: pessoas_lista.php");}?><html><head><meta http-equiv="Content-type"content="text/html; charset=utf-8" /><title>IFPI-PHB</title></head><body><h1>Pessoas - Insere</h1><form action="pessoa_insere.php" method="post"><?php include_once(pessoa_form.php); ?><p><input type="submit" value="Insere" /></p></form><p><a href="pessoas_lista.php">Volta</a></p></body></html>
  • 18. CRUD - pessoa_form.php<p>Nome<br/><input type="text" name="nome"value="<?= $pessoa[nome] ?>" /></p><p>Telefone<br/><input type="text" name="fone"value="<?= $pessoa[fone] ?>" /></p><p>E-Mail<br/><input type="text" name="email"value="<?= $pessoa[email] ?>" /></p>
  • 19. CRUD - pessoa_edita.php<?phpinclude_once(db_conecta.php);$result = mysql_query("SELECT * FROM pessoas where id={$_GET[id]}",$conexao)or die (" ERRO na consulta " . mysql_error());$pessoa = mysql_fetch_array($result);if (strlen(trim($_POST[nome])) > 0) {mysql_query("update pessoas set nome={$_POST[nome]},fone={$_POST[fone]}, email={$_POST[email]}where id={$_GET[id]}")or die(Problema ao realizar operação: . mysql_error());header("Location: pessoas_lista.php");}?><html><head><meta http-equiv="Content-type"content="text/html; charset=utf-8" /><title>IFPI-PHB</title></head><body><h1>Pessoas - Edita</h1><form action="pessoa_edita.php?id=<?= $_GET[id] ?>"method="post"><?php include_once(pessoa_form.php); ?><p><input type="submit" value="Atualiza" /></p></form><p><a href="pessoas_lista.php">Volta</a></p></body></html>
  • 20. PHP com MySQLDETALHES EXTRA
  • 21. Conexão com MySQL Usar UNIX socket é mais eficiente que usar a camada TCP/IP. Para a extensão mysql usar UNIX socket basta que esserecurso esteja disponível e que o nome do host sejalocalhost: Também é possível definir o acesso via UNIX Socketexplicitamente:mysql_connect(localhost,root, );mysql_connect(localhost:/var/run/mysqld/mysqld.sock,root, );
  • 22. Conexão com MySQL mysql_pconnect Abre uma conexão persistente com um servidorMySQL. Ao conectar, a função tenta encontrar umaconexão que já esteja aberta. Se uma for encontrada, será usada ao invés deabrir uma nova conexão. A conexão não será fechada quando a execuçãodo script terminar. Ela permanecerá aberta para uso futuro mysql_close() não irá fechar conexões estabelecidaspor mysql_pconnect().
  • 23. Obtendo informações<?php$link = mysql_pconnect(localhost, root, );if (!$link) {die(Falha na conexão: . mysql_error());}echo(Servidor: . mysql_get_host_info() . <br/>);echo(Cliente : . mysql_get_client_info() . <br/>);?>
  • 24. Prepared Statements Vantagens: Velocidade É um meio eficiente de executar um comandomais de uma vez. O comando é analisado epreparado para execução no próprio banco dedados. Segurança Reduz a possibilidade de SQL Injection. Não está disponível na biblioteca mysql.
  • 25. Prepared Statements com mysqli<?php$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");if (mysqli_connect_errno()) {echo("A conexão falhou: " . mysqli_connect_error());exit();}$cidade = "Parnaíba";if ($stmt = mysqli_prepare($con,"SELECT bairro, cep FROM cidade WHERE nome =?")) {mysqli_stmt_bind_param($stmt, "s", $cidade);mysqli_stmt_execute($stmt);mysqli_stmt_bind_result($stmt, $bairro, $cep);while (mysqli_stmt_fetch($stmt)) {echo("$cidade fica no bairro $bairro e cep $cep");}mysqli_stmt_close($stmt);}mysqli_close($con);?>
  • 26. mysqli_stmt_bind_param bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string$types , mixed &$var1 [, mixed &$... ] ) type i - corresponde a uma variável de tipo inteiro d - corresponde a uma variável de tipo double s - corresponde a uma variável de tipo string b - corresponde a uma variável que contémdados para um blob e enviará em pacotes
  • 27. mysqli_stmt_bind_param...$stmt = mysqli_prepare($link, "INSERT INTO lang VALUES (?, ?, ?, ?)");mysqli_stmt_bind_param($stmt, sssd, $code, $lang, $official, $perc);...