SlideShare uma empresa Scribd logo
Programação para WEB
Regis Pires Magalhães
regispiresmag@gmail.com
PHP e MySQL
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 prepared
statements, conjunto de caracteres, codificação e
transações.
 Não suporta conexões persistentes. É possível que
sejam habilitadas como padrão na versão 6 do PHP.
 Possui uma interface procedural e uma interface OO.
Opções de acesso
 Há várias formas de acessar o MySQL:
 ADOdb
 Biblioteca bastante completa que padroniza o acesso a
vários bancos de dados.
 Acesso semelhante ao ADO da Microsoft, mas roda em
outros sistemas operacionais além do Windows.
 PEAR
 PHP Extension and Application Repository
 Extensa biblioteca com muitas finalidades, inclusive
acesso 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
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ão
persistentes são automaticamente fechadas ao final da
execução do script.
 mysql_error
 Retorna o texto da mensagem de erro da operação MySQL
anterior.
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);
?>
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.');
}
?>
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 matriz
associativa
Codificação de Caracteres
 Algumas dicas para evitar problemas com
acentuação de caracteres:
 Bases de dados, tabelas e campos alfanuméricos
criados no MySQL devem usar codificação utf8 e
collation utf8_general_ci.
 O HTML gerado deve ter conjunto de caracteres
utf-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 no
formato utf-8 (sem BOM – Byte Order Mark).
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>
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();
}
?>
CRUD
 Create - Criar
 Read / Retrieve – Ler / Obter
 Update - Atualizar
 Delete – Apagar / Remover
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 por
'pessoas_insere.php' e 'pessoas_edita.php'
 pessoas_edita.php
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');
?>
CRUD - pessoas_lista.php
<?php
include_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>
CRUD - pessoa_mostra.php
<?php
include_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>
CRUD - pessoa_exclui.php
<?php
include_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');
?>
CRUD - pessoa_insere.php
<?php
include_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>
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>
CRUD - pessoa_edita.php
<?php
include_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>
PHP com MySQL
DETALHES EXTRA
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 esse
recurso esteja disponível e que o nome do host seja
localhost:
 Também é possível definir o acesso via UNIX Socket
explicitamente:
mysql_connect('localhost','root', '');
mysql_connect('localhost:/var/run/mysqld/mysqld.sock',
'root', '');
Conexão com MySQL
 mysql_pconnect
 Abre uma conexão persistente com um servidor
MySQL.
 Ao conectar, a função tenta encontrar uma
conexão que já esteja aberta.
 Se uma for encontrada, será usada ao invés de
abrir uma nova conexão.
 A conexão não será fechada quando a execução
do script terminar.
 Ela permanecerá aberta para uso futuro
 mysql_close() não irá fechar conexões estabelecidas
por mysql_pconnect().
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/>');
?>
Prepared Statements
 Vantagens:
 Velocidade
 É um meio eficiente de executar um comando
mais de uma vez. O comando é analisado e
preparado para execução no próprio banco de
dados.
 Segurança
 Reduz a possibilidade de SQL Injection.
 Não está disponível na biblioteca mysql.
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);
?>
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ém
dados para um blob e enviará em pacotes
mysqli_stmt_bind_param
...
$stmt = mysqli_prepare($link, "INSERT INTO lang VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $lang, $official, $perc);
...

Mais conteúdo relacionado

PDF
DELPHI & MySQL - September 2004
PDF
PHP e MySQL para iniciantes
PDF
Aula 01 PHP+MySQL - LabMM4
PPTX
Banco de dadados MySQL com PHP
PDF
Como selecionar dados em uma tabela que está em outro servidor
PDF
PHP e Mysql - INSERT
PDF
Pdo do PHP Palestra
PDF
PHPMyadmin - Introdução
DELPHI & MySQL - September 2004
PHP e MySQL para iniciantes
Aula 01 PHP+MySQL - LabMM4
Banco de dadados MySQL com PHP
Como selecionar dados em uma tabela que está em outro servidor
PHP e Mysql - INSERT
Pdo do PHP Palestra
PHPMyadmin - Introdução

Mais procurados (20)

PDF
PHP e Mysql - UPDATE
PDF
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
PDF
Uma abordagem ao Java EE 6
PDF
LabMM4 (T16 - 12/13) - PHP + MySQL
PDF
Alo mundojpa
PDF
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
PDF
Acessando o MySql com o Python
PPT
Aprofunde se no php 5.3
ODP
Workshop - Desenvolvimento web com Drupal 7
PDF
Mini Curso PHP Twig - PHP Conference 2017
ODP
Oficina postgresql avançado_consegi2010
PDF
PHP e Mysql - DELETE
PPTX
Segurança PHP - por Samyr Abdo
PPTX
ASP.NET - Recursos de Configuração
PDF
PPT
PHP FrameWARks - FISL
PDF
Apostila Curso Php My Sql(Portugues)
PDF
Automatizar backup no pf sense [dica]
ODP
Prog web 07-pdo
PDF
Fundamentos de PHP, phpMyAdmin e MySQL (parte 2)
PHP e Mysql - UPDATE
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Uma abordagem ao Java EE 6
LabMM4 (T16 - 12/13) - PHP + MySQL
Alo mundojpa
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Acessando o MySql com o Python
Aprofunde se no php 5.3
Workshop - Desenvolvimento web com Drupal 7
Mini Curso PHP Twig - PHP Conference 2017
Oficina postgresql avançado_consegi2010
PHP e Mysql - DELETE
Segurança PHP - por Samyr Abdo
ASP.NET - Recursos de Configuração
PHP FrameWARks - FISL
Apostila Curso Php My Sql(Portugues)
Automatizar backup no pf sense [dica]
Prog web 07-pdo
Fundamentos de PHP, phpMyAdmin e MySQL (parte 2)
Anúncio

Semelhante a Prog web 05-php-mysql (20)

PPTX
Sistema de Login php.pptx
PDF
ZIP
3260 php truquesmagicos
ZIP
3260 php truquesmagicos %281%29
PDF
Livropythonmysql 091022073751-phpapp01
PDF
Apontamentos psi m18
PPTX
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDF
Fundamentos de JDBC
PDF
Fundamentos de JDBC
ODP
Java 16 Jdbc
PDF
PHP Aula07 - conexão Com Banco de Dados
PDF
Aula 12 Relatório - Tabelas
PDF
Sistema php
PPTX
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
PDF
PHP e Redis
PPT
PHP GERAL
PDF
Desenvolvimento Web com Simfony Framework.
PDF
PHP like a super hero
ODP
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
PDF
Fundamentos de JDBC
Sistema de Login php.pptx
3260 php truquesmagicos
3260 php truquesmagicos %281%29
Livropythonmysql 091022073751-phpapp01
Apontamentos psi m18
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
Fundamentos de JDBC
Fundamentos de JDBC
Java 16 Jdbc
PHP Aula07 - conexão Com Banco de Dados
Aula 12 Relatório - Tabelas
Sistema php
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
PHP e Redis
PHP GERAL
Desenvolvimento Web com Simfony Framework.
PHP like a super hero
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Fundamentos de JDBC
Anúncio

Mais de Regis Magalhães (20)

PDF
High Dimensional Data
PDF
Web Scale Data Management
PPTX
PHP 10 CodeIgniter
ODP
Prog web 01-php-introducao
ODP
Prog web 02-php-primeiros-passos
ODP
Prog web 00-modelo-cliente_servidor_web
ODP
Prog web 09-php-crud-mvc
ODP
Prog web 08-php-mvc
ODP
Prog web 06-php-oo
ODP
Prog web 04-php-gd
PPT
Prog web 03-php-sessoes-cookies_cabecalhos
ODP
Prog web 03-php-sessoes-cookies_cabecalhos
PPT
Prog web 02-php-primeiros-passos
ODP
Prog web 02-php-primeiros-passos
ODP
Prog web 00-modelo-cliente_servidor_web
ODP
Prog web 01-php-introducao
PDF
Linked Data Tutorial - Conferencia W3C Brasil 2011
PDF
Linked Data - Minicurso - SBBD 2011
ODP
Curso Ruby
PDF
Easy Rails
High Dimensional Data
Web Scale Data Management
PHP 10 CodeIgniter
Prog web 01-php-introducao
Prog web 02-php-primeiros-passos
Prog web 00-modelo-cliente_servidor_web
Prog web 09-php-crud-mvc
Prog web 08-php-mvc
Prog web 06-php-oo
Prog web 04-php-gd
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
Prog web 00-modelo-cliente_servidor_web
Prog web 01-php-introducao
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data - Minicurso - SBBD 2011
Curso Ruby
Easy Rails

Último (20)

PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Aula sobre banco de dados com firebase db
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Apple Pippin Uma breve introdução. - David Glotz
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Processos na gestão de transportes, TM100 Col18
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Aula sobre banco de dados com firebase db
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express

Prog web 05-php-mysql

  • 1. Programação para WEB Regis Pires Magalhães regispiresmag@gmail.com PHP 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 prepared statements, conjunto de caracteres, codificação e transações.  Não suporta conexões persistentes. É possível que sejam 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 a vários bancos de dados.  Acesso semelhante ao ADO da Microsoft, mas roda em outros sistemas operacionais além do Windows.  PEAR  PHP Extension and Application Repository  Extensa biblioteca com muitas finalidades, inclusive acesso 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ão persistentes são automaticamente fechadas ao final da execução do script.  mysql_error  Retorna o texto da mensagem de erro da operação MySQL anterior.
  • 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 matriz associativa
  • 8. Codificação de Caracteres  Algumas dicas para evitar problemas com acentuação de caracteres:  Bases de dados, tabelas e campos alfanuméricos criados no MySQL devem usar codificação utf8 e collation utf8_general_ci.  O HTML gerado deve ter conjunto de caracteres utf-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 no formato 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 por 'pessoas_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 <?php include_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 <?php include_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 <?php include_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 <?php include_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 <?php include_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>
  • 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 esse recurso esteja disponível e que o nome do host seja localhost:  Também é possível definir o acesso via UNIX Socket explicitamente: 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 servidor MySQL.  Ao conectar, a função tenta encontrar uma conexão que já esteja aberta.  Se uma for encontrada, será usada ao invés de abrir uma nova conexão.  A conexão não será fechada quando a execução do script terminar.  Ela permanecerá aberta para uso futuro  mysql_close() não irá fechar conexões estabelecidas por 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 comando mais de uma vez. O comando é analisado e preparado para execução no próprio banco de dados.  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ém dados 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); ...