SlideShare uma empresa Scribd logo
Programação para WEB Regis Pires Magalhães [email_address] 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.
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
Consulta e Exibição <? $conexao   =   mysql_connect( 'localhost' , 'root' , '' )   or   die   ( &quot;Erro ao efetuar conexão.&quot; ); mysql_select_db( &quot;prog_web&quot; ); $result   =   mysql_query( &quot;SELECT * FROM pessoas&quot; , $conexao )   or   die   ( &quot; ERRO na consulta &quot;   .   mysql_error());   ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas </ h1 > < table  border = &quot;1&quot; > < tr >< th > Nome </ th >< th > Fone </ th >< th > E-Mail </ th ></ tr > <?   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 Retrieve Update Delete
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' ); ?>
CRUD - pessoas_lista.php <?php include_once ( 'db_conecta.php' ); $result   =   mysql_query( &quot;SELECT * FROM pessoas&quot; , $conexao )   or   die   ( 'ERRO na consulta: '   .   mysql_error());   ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas - Lista </ h1 > < table  border = &quot;1&quot; > < tr >< th > Nome </ th >< th > Fone </ th > < th > E-Mail </ th >< th  colspan = &quot;3&quot; > Ações </ th ></ tr > <?   while ( $pessoa   =   mysql_fetch_array( $result ))   {   ?> < tr > < td > <? =   $pessoa [ 'nome' ]   ?> </ td > < td > <? =   $pessoa [ 'fone' ]   ?> </ td > < td > <? =   $pessoa [ 'email' ]   ?> </ td > < td >< a  href = &quot; pessoas_mostra.php?id= <? =   $pessoa [ 'id' ]   ?> &quot; > Mostra </ a ></ td > < td >< a  href = &quot; pessoas_edita.php?id= <? =   $pessoa [ 'id' ]   ?> &quot; > Edita </ a ></ td > < td >< a  href = &quot; pessoas_exclui.php?id= <? =   $pessoa [ 'id' ]   ?> &quot;     onclick = &quot;return confirm('Tem certeza?');&quot; > Exclui </ a ></ td > </ td > </ tr > <?   }   ?>   </ table > < p >< a  href = &quot;pessoas_insere.php&quot; > Insere </ a ></ p > </ body > </ html >
CRUD - pessoas_mostra.php <?php include_once ( 'db_conecta.php' ); $id   =   $_GET [ 'id' ]; $result   =   mysql_query( &quot;SELECT * FROM pessoas where id=' $id '&quot; , $conexao ) or   die   ( 'ERRO na consulta: '   .   mysql_error());   $pessoa   =   mysql_fetch_array( $result );   ?> < html > < head >< title > CEFET-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 = &quot;pessoas_lista.php&quot; > Volta </ a ></ p > </ body > </ html >
CRUD - pessoas_exclui.php <?php include_once ( 'db_conecta.php' ); $id   =   $_GET [ 'id' ]; mysql_query( &quot;DELETE FROM pessoas where id=' $id '&quot; , $conexao )   or   die   ( ' ERRO na exclusão: '   .   mysql_error());   header( 'Location: pessoas_lista.php' ); ?>
CRUD - pessoas_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( &quot;insert into pessoas (nome,fone,email) values (' { $pessoa [ 'nome' ]} ',' { $pessoa [ 'fone' ]} ', ' { $pessoa [ 'email' ]} ')&quot; )   or   die ( 'Problema ao realizar operação: '   .   mysql_error()); header( &quot;Location: pessoas_lista.php&quot; ); } ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas - Insere </ h1 > < form  action = &quot;pessoas_insere.php&quot;  method = &quot;post&quot; > <?php   include_once ( 'pessoas_form.php' );   ?> < p >< input  type = &quot;submit&quot;  value = &quot;Insere&quot;  /></ p > </ form > < p >< a  href = &quot;pessoas_lista.php&quot; > Volta </ a ></ p > </ body > </ html >
CRUD - pessoas_form.php < p > Nome < br />< input  type = &quot;text&quot;  name = &quot;nome&quot;  value = &quot; <? =   $pessoa [ 'nome' ]   ?> &quot;   /></ p > < p > Telefone < br />< input  type = &quot;text&quot;  name = &quot;fone&quot;  value = &quot; <? =   $pessoa [ 'fone' ]   ?> &quot;   /></ p > < p > E-Mail < br />< input  type = &quot;text&quot;  name = &quot;email&quot;  value = &quot; <? =   $pessoa [ 'email' ]   ?> &quot;   /></ p >
CRUD - pessoas_edita.php <?php include_once ( 'db_conecta.php' ); $result   =   mysql_query( &quot;SELECT * FROM pessoas where id=' { $_GET [ 'id' ]} '&quot; , $conexao )   or   die   ( &quot; ERRO na consulta &quot;   .   mysql_error());   $pessoa   =   mysql_fetch_array( $result );   if   (strlen(trim( $_POST [ 'nome' ]))   >   0 )   { mysql_query( &quot;update pessoas set nome=' { $_POST [ 'nome' ]} ',  fone=' { $_POST [ 'fone' ]} ', email=' { $_POST [ 'email' ]} '  where id=' { $_GET [ 'id' ]} '&quot; ) or   die ( 'Problema ao realizar operação: '   .   mysql_error()); header( &quot;Location: pessoas_lista.php&quot; ); } ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas - Edita </ h1 > < form  action = &quot; pessoas_edita.php?id= <? =   $_GET [ 'id' ]   ?> &quot;   method = &quot;post&quot; > <?php   include_once ( 'pessoas_form.php' );   ?> < p >< input  type = &quot;submit&quot;  value = &quot;Atualiza&quot;  /></ p > </ form > < p >< a  href = &quot;pessoas_lista.php&quot; > 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.
PDO Interface comum para acesso a vários bancos de dados; Escrito em C e com excelente performance; Suporte a: MySQL, PostgreSQL, Firebird, SQLite, Oracle, ODBC, MSSQL, Sybase, Informix, FreeTDS. Usa UNIX Socket caso o host seja definido como  localhost  e tal recurso esteja disponível: $con   =   new   PDO( 'mysql:host=localhost;dbname=prog_web' ,   'root' ,   '' ); Pode-se também definir o uso de UNIX Socket explicitamente: $con   =   new   PDO( 'mysql:unix_socket;dbname=prog_web' ,   'root' ,   '' );
MySQL via PDO <?php try   { $con   =   new   PDO( 'mysql:host=localhost;dbname=prog_web' ,     'root' ,   '' ); $stmt   =   $con ->prepare( &quot;SELECT * FROM pessoas &quot; ); $stmt ->execute(); $resultado   =   $stmt ->fetchAll(); print_r( $resultado ); }   catch   (PDOException   $ex )   { echo   $ex ->getMessage(); die (); } ?>
MySQL via PDO <?php try   { $nome   =   'R' ; $con   =   new   PDO( 'mysql:host=localhost;dbname=prog_web' ,     'root' ,   '' ,   array (PDO::ATTR_PERSISTENT   =>   true )); $sql   =   &quot;SELECT * FROM pessoas  WHERE nome LIKE concat(:nome,'%')&quot; ; $stmt   =   $con ->prepare( $sql ); $stmt ->bindParam( ':nome' ,   $nome ); $stmt ->setFetchMode(PDO::FETCH_ASSOC); $stmt ->execute(); $resultado   =   $stmt ->fetchAll(); print_r( $resultado ); }   catch   (PDOException   $ex )   { echo   $ex ->getMessage(); die (); } ?>
MySQL via PDO <?php try   { $nome   =   'Regis' ;   $fone   =   '1234' ;   $email   =   'regis@cefetpi.br' ; $con   =   new   PDO( 'mysql:host=localhost;dbname=prog_web' ,     'root' ,   '' ,   array (PDO::ATTR_PERSISTENT   =>   true )); $sql   =   'INSERT INTO pessoas (nome,fone,email)    VALUES (:nome,:fone,:email) ' ; $stmt   =   $con ->prepare( $sql ); $stmt ->bindParam( ':nome' ,   $nome ); $stmt ->bindParam( ':fone' ,   $fone ); $stmt ->bindParam( ':email' ,   $email ); $stmt ->execute(); }   catch   (PDOException   $ex )   { echo   $ex ->getMessage(); die (); } ?>
Obtendo informações sobre PDO <?php $con   =   new   PDO( 'mysql:host=localhost;dbname=prog_web' ,     'root' ,   '' ,   array (PDO::ATTR_PERSISTENT   =>   true )); $attributes   =   array ( &quot;AUTOCOMMIT&quot; ,   &quot;ERRMODE&quot; ,   &quot;CASE&quot; ,   &quot;CLIENT_VERSION&quot; , &quot;CONNECTION_STATUS&quot; ,  &quot;ORACLE_NULLS&quot; ,   &quot;PERSISTENT&quot; , &quot;PREFETCH&quot; ,   &quot;SERVER_INFO&quot; ,   &quot;SERVER_VERSION&quot; , &quot;TIMEOUT&quot; ); foreach   ( $attributes   as   $val )   { echo   &quot;PDO::ATTR_ $val : &quot; ; echo   $con ->getAttribute(constant( &quot;PDO::ATTR_ $val &quot; ))  .   '<br/>' ; } ?>

Mais conteúdo relacionado

ODP
Apresentacao codeigniter
PPTX
Otimização e Escalabilidade
PPTX
HTML & CSS - Aula 4
PPTX
HTML - aula 1
PPTX
HTML & CSS - Aula 2
PPTX
HTML & CSS - Aula 5
PPTX
HTML & CSS - Aula 3
PDF
Apresentacao codeigniter
Otimização e Escalabilidade
HTML & CSS - Aula 4
HTML - aula 1
HTML & CSS - Aula 2
HTML & CSS - Aula 5
HTML & CSS - Aula 3

Mais procurados (20)

PDF
Html Exercicio
ODP
Php 07 Cakephp
TXT
Animes
ODP
Da argila ao forte: como desenvolver uma loja com PagSeguro
PDF
Realize mais com HTML 5 e CSS 3 - EDTED / RS
PPT
Aula 8 php
PDF
Básico em (X)HTML e CSS
PPT
04 02 novos elementos
PDF
PHP básico para iniciantes
PPT
Aprenda HTML e CSS
PPTX
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
PPT
Desenvolvimento Mobile com Ruby
PDF
Mapeamento Objeto-Relacional com PEAR::DataObject
PDF
Html, css, js, ajax
DOC
PDF
Html - Aula 4
PDF
PHP para Adultos: Clean Code e Object Calisthenics
PDF
PDF
Mini Curso PHP Twig - PHP Conference 2017
PDF
Html - Aula 3
Html Exercicio
Php 07 Cakephp
Animes
Da argila ao forte: como desenvolver uma loja com PagSeguro
Realize mais com HTML 5 e CSS 3 - EDTED / RS
Aula 8 php
Básico em (X)HTML e CSS
04 02 novos elementos
PHP básico para iniciantes
Aprenda HTML e CSS
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Desenvolvimento Mobile com Ruby
Mapeamento Objeto-Relacional com PEAR::DataObject
Html, css, js, ajax
Html - Aula 4
PHP para Adultos: Clean Code e Object Calisthenics
Mini Curso PHP Twig - PHP Conference 2017
Html - Aula 3
Anúncio

Destaque (8)

PDF
Markvartický zpravodaj
PPT
Heritage Academy Christian School
PPT
Basketball
PPT
Long-Term Financial Planning: Building The Case
PPT
Leveraging Baldrige for Performance Management
PDF
Histograma
PDF
Unlock The Chinese Market in Australia
PPT
How to build products that people want - Sameer Guglani @ proto.in-July 08
Markvartický zpravodaj
Heritage Academy Christian School
Basketball
Long-Term Financial Planning: Building The Case
Leveraging Baldrige for Performance Management
Histograma
Unlock The Chinese Market in Australia
How to build products that people want - Sameer Guglani @ proto.in-July 08
Anúncio

Semelhante a Php 04 Mysql (20)

ODP
Php 03 Sessoes Cookies Cabecalhos
PPT
nDeveloper Framework
PPTX
NotORM
ODP
Zend Framework
ODP
Apps Web em Wicket e Scala no GlassFish Java EE 6
ODP
Html5 - O futuro da Web
ODP
Combinando OO e Funcional em javascript de forma prática
PPTX
Desenvolvimento de aplicativos para o Facebook
ODP
Java mais ágil que nunca no desenvolvimento Web
ODP
Puppet – Torne Seu Datacenter áGil
PPT
2009 05 20 Floripa Flex
ODP
PDF
apostila.pdf
PPTX
Metodologias de Programação IV - Aula 2, Secção 3 - Terminologia do protocolo...
PDF
Smarty Template Engine
PDF
Hello SAFE World!!!
PPT
Aula 3 - ASP
PPT
Curso de Introdução - PHP
PDF
03 - Formulários &amp; Dados
ODP
Php 08 Oo
Php 03 Sessoes Cookies Cabecalhos
nDeveloper Framework
NotORM
Zend Framework
Apps Web em Wicket e Scala no GlassFish Java EE 6
Html5 - O futuro da Web
Combinando OO e Funcional em javascript de forma prática
Desenvolvimento de aplicativos para o Facebook
Java mais ágil que nunca no desenvolvimento Web
Puppet – Torne Seu Datacenter áGil
2009 05 20 Floripa Flex
apostila.pdf
Metodologias de Programação IV - Aula 2, Secção 3 - Terminologia do protocolo...
Smarty Template Engine
Hello SAFE World!!!
Aula 3 - ASP
Curso de Introdução - PHP
03 - Formulários &amp; Dados
Php 08 Oo

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 07-pdo
ODP
Prog web 06-php-oo
ODP
Prog web 05-php-mysql
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
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 07-pdo
Prog web 06-php-oo
Prog web 05-php-mysql
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

Último (20)

PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PPTX
Aula sobre banco de dados com firebase db
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Processos na gestão de transportes, TM100 Col18
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
COBITxITIL-Entenda as diferença em uso governança TI
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Aula sobre desenvolvimento de aplicativos
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Apple Pippin Uma breve introdução. - David Glotz
Custos e liquidação no SAP Transportation Management, TM130 Col18
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Aula sobre banco de dados com firebase db
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Curso de Java 9 - (Threads) Multitarefas.pptx
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Aula 18 - Manipulacao De Arquivos python

Php 04 Mysql

  • 1. Programação para WEB Regis Pires Magalhães [email_address] 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.
  • 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. Consulta e Exibição <? $conexao = mysql_connect( 'localhost' , 'root' , '' ) or die ( &quot;Erro ao efetuar conexão.&quot; ); mysql_select_db( &quot;prog_web&quot; ); $result = mysql_query( &quot;SELECT * FROM pessoas&quot; , $conexao ) or die ( &quot; ERRO na consulta &quot; . mysql_error()); ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas </ h1 > < table border = &quot;1&quot; > < tr >< th > Nome </ th >< th > Fone </ th >< th > E-Mail </ th ></ tr > <? while ( $pessoa = mysql_fetch_array( $result )) { ?> < tr > < td > <? = $pessoa [ 'nome' ] ?> </ td > < td > <? = $pessoa [ 'fone' ] ?> </ td > < td > <? = $pessoa [ 'email' ] ?> </ td > </ tr > <? } ?> </ table > </ body > </ html >
  • 9. 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(); } ?>
  • 10. CRUD Create Retrieve Update Delete
  • 11. 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
  • 12. CRUD - db_conecta.php <?php $conexao = mysql_connect( 'localhost' , 'root' , '' ) or die ( 'Erro ao efetuar conexão.' ); mysql_select_db( 'prog_web' ); ?>
  • 13. CRUD - pessoas_lista.php <?php include_once ( 'db_conecta.php' ); $result = mysql_query( &quot;SELECT * FROM pessoas&quot; , $conexao ) or die ( 'ERRO na consulta: ' . mysql_error()); ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas - Lista </ h1 > < table border = &quot;1&quot; > < tr >< th > Nome </ th >< th > Fone </ th > < th > E-Mail </ th >< th colspan = &quot;3&quot; > Ações </ th ></ tr > <? while ( $pessoa = mysql_fetch_array( $result )) { ?> < tr > < td > <? = $pessoa [ 'nome' ] ?> </ td > < td > <? = $pessoa [ 'fone' ] ?> </ td > < td > <? = $pessoa [ 'email' ] ?> </ td > < td >< a href = &quot; pessoas_mostra.php?id= <? = $pessoa [ 'id' ] ?> &quot; > Mostra </ a ></ td > < td >< a href = &quot; pessoas_edita.php?id= <? = $pessoa [ 'id' ] ?> &quot; > Edita </ a ></ td > < td >< a href = &quot; pessoas_exclui.php?id= <? = $pessoa [ 'id' ] ?> &quot; onclick = &quot;return confirm('Tem certeza?');&quot; > Exclui </ a ></ td > </ td > </ tr > <? } ?> </ table > < p >< a href = &quot;pessoas_insere.php&quot; > Insere </ a ></ p > </ body > </ html >
  • 14. CRUD - pessoas_mostra.php <?php include_once ( 'db_conecta.php' ); $id = $_GET [ 'id' ]; $result = mysql_query( &quot;SELECT * FROM pessoas where id=' $id '&quot; , $conexao ) or die ( 'ERRO na consulta: ' . mysql_error()); $pessoa = mysql_fetch_array( $result ); ?> < html > < head >< title > CEFET-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 = &quot;pessoas_lista.php&quot; > Volta </ a ></ p > </ body > </ html >
  • 15. CRUD - pessoas_exclui.php <?php include_once ( 'db_conecta.php' ); $id = $_GET [ 'id' ]; mysql_query( &quot;DELETE FROM pessoas where id=' $id '&quot; , $conexao ) or die ( ' ERRO na exclusão: ' . mysql_error()); header( 'Location: pessoas_lista.php' ); ?>
  • 16. CRUD - pessoas_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( &quot;insert into pessoas (nome,fone,email) values (' { $pessoa [ 'nome' ]} ',' { $pessoa [ 'fone' ]} ', ' { $pessoa [ 'email' ]} ')&quot; ) or die ( 'Problema ao realizar operação: ' . mysql_error()); header( &quot;Location: pessoas_lista.php&quot; ); } ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas - Insere </ h1 > < form action = &quot;pessoas_insere.php&quot; method = &quot;post&quot; > <?php include_once ( 'pessoas_form.php' ); ?> < p >< input type = &quot;submit&quot; value = &quot;Insere&quot; /></ p > </ form > < p >< a href = &quot;pessoas_lista.php&quot; > Volta </ a ></ p > </ body > </ html >
  • 17. CRUD - pessoas_form.php < p > Nome < br />< input type = &quot;text&quot; name = &quot;nome&quot; value = &quot; <? = $pessoa [ 'nome' ] ?> &quot; /></ p > < p > Telefone < br />< input type = &quot;text&quot; name = &quot;fone&quot; value = &quot; <? = $pessoa [ 'fone' ] ?> &quot; /></ p > < p > E-Mail < br />< input type = &quot;text&quot; name = &quot;email&quot; value = &quot; <? = $pessoa [ 'email' ] ?> &quot; /></ p >
  • 18. CRUD - pessoas_edita.php <?php include_once ( 'db_conecta.php' ); $result = mysql_query( &quot;SELECT * FROM pessoas where id=' { $_GET [ 'id' ]} '&quot; , $conexao ) or die ( &quot; ERRO na consulta &quot; . mysql_error()); $pessoa = mysql_fetch_array( $result ); if (strlen(trim( $_POST [ 'nome' ])) > 0 ) { mysql_query( &quot;update pessoas set nome=' { $_POST [ 'nome' ]} ', fone=' { $_POST [ 'fone' ]} ', email=' { $_POST [ 'email' ]} ' where id=' { $_GET [ 'id' ]} '&quot; ) or die ( 'Problema ao realizar operação: ' . mysql_error()); header( &quot;Location: pessoas_lista.php&quot; ); } ?> < html > < head >< title > CEFET-PHB </ title ></ head > < body > < h1 > Pessoas - Edita </ h1 > < form action = &quot; pessoas_edita.php?id= <? = $_GET [ 'id' ] ?> &quot; method = &quot;post&quot; > <?php include_once ( 'pessoas_form.php' ); ?> < p >< input type = &quot;submit&quot; value = &quot;Atualiza&quot; /></ p > </ form > < p >< a href = &quot;pessoas_lista.php&quot; > Volta </ a ></ p > </ body > </ html >
  • 19. PHP com MySQL DETALHES EXTRA
  • 20. 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' , '' );
  • 21. 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().
  • 22. 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/>' ); ?>
  • 23. 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.
  • 24. PDO Interface comum para acesso a vários bancos de dados; Escrito em C e com excelente performance; Suporte a: MySQL, PostgreSQL, Firebird, SQLite, Oracle, ODBC, MSSQL, Sybase, Informix, FreeTDS. Usa UNIX Socket caso o host seja definido como localhost e tal recurso esteja disponível: $con = new PDO( 'mysql:host=localhost;dbname=prog_web' , 'root' , '' ); Pode-se também definir o uso de UNIX Socket explicitamente: $con = new PDO( 'mysql:unix_socket;dbname=prog_web' , 'root' , '' );
  • 25. MySQL via PDO <?php try { $con = new PDO( 'mysql:host=localhost;dbname=prog_web' , 'root' , '' ); $stmt = $con ->prepare( &quot;SELECT * FROM pessoas &quot; ); $stmt ->execute(); $resultado = $stmt ->fetchAll(); print_r( $resultado ); } catch (PDOException $ex ) { echo $ex ->getMessage(); die (); } ?>
  • 26. MySQL via PDO <?php try { $nome = 'R' ; $con = new PDO( 'mysql:host=localhost;dbname=prog_web' , 'root' , '' , array (PDO::ATTR_PERSISTENT => true )); $sql = &quot;SELECT * FROM pessoas WHERE nome LIKE concat(:nome,'%')&quot; ; $stmt = $con ->prepare( $sql ); $stmt ->bindParam( ':nome' , $nome ); $stmt ->setFetchMode(PDO::FETCH_ASSOC); $stmt ->execute(); $resultado = $stmt ->fetchAll(); print_r( $resultado ); } catch (PDOException $ex ) { echo $ex ->getMessage(); die (); } ?>
  • 27. MySQL via PDO <?php try { $nome = 'Regis' ; $fone = '1234' ; $email = 'regis@cefetpi.br' ; $con = new PDO( 'mysql:host=localhost;dbname=prog_web' , 'root' , '' , array (PDO::ATTR_PERSISTENT => true )); $sql = 'INSERT INTO pessoas (nome,fone,email) VALUES (:nome,:fone,:email) ' ; $stmt = $con ->prepare( $sql ); $stmt ->bindParam( ':nome' , $nome ); $stmt ->bindParam( ':fone' , $fone ); $stmt ->bindParam( ':email' , $email ); $stmt ->execute(); } catch (PDOException $ex ) { echo $ex ->getMessage(); die (); } ?>
  • 28. Obtendo informações sobre PDO <?php $con = new PDO( 'mysql:host=localhost;dbname=prog_web' , 'root' , '' , array (PDO::ATTR_PERSISTENT => true )); $attributes = array ( &quot;AUTOCOMMIT&quot; , &quot;ERRMODE&quot; , &quot;CASE&quot; , &quot;CLIENT_VERSION&quot; , &quot;CONNECTION_STATUS&quot; , &quot;ORACLE_NULLS&quot; , &quot;PERSISTENT&quot; , &quot;PREFETCH&quot; , &quot;SERVER_INFO&quot; , &quot;SERVER_VERSION&quot; , &quot;TIMEOUT&quot; ); foreach ( $attributes as $val ) { echo &quot;PDO::ATTR_ $val : &quot; ; echo $con ->getAttribute(constant( &quot;PDO::ATTR_ $val &quot; )) . '<br/>' ; } ?>