Sie sind auf Seite 1von 28

Programao para WEB

PHP e MySQL

Regis Pires Magalhes


regispiresmag@gmail.com

Opes de acesso

H vrias formas de acessar o MySQL: Extenso MySQL a mais usada atualmente. Excelente performance. Suporta conexes persistentes . No suporta prepared statements. Extenso MySQLi (Improved / Melhorada) Possui funcionalidades extra como prepared statements, conjunto de caracteres, codificao e transaes. No suporta conexes persistentes . possvel que sejam habilitadas como padro na verso 6 do PHP.

Opes de acesso

H vrias formas de acessar o MySQL: ADOdb Biblioteca bastante completa que padroniza o acesso a vrios bancos de dados. Acesso semelhante ao ADO da Microsoft, mas roda em outros sistemas operacionais alm 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 verso 5.1

Conexo com o MySQL

mysql_connect

Abre uma conexo com um servidor MySQL. Fecha uma conexo com um servidor MySQL. Normalmente no necessrio, j que as conexes no persistentes so automaticamente fechadas ao final da execuo do script. Retorna o texto da mensagem de erro da operao MySQL anterior.

mysql_close

mysql_error

Conexo com o MySQL


<?php $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida'; mysql_close($link); ?>

Seleo de Base de Dados

mysql_select_db

Seleciona uma base de dados MySQL.

<?php $con = mysql_connect('localhost', 'root', ''); if (!$con) { die('No foi possvel 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.'); } ?>

Operaes na Base de Dados

mysql_query

Executa uma consulta ou comando SQL. Obtm um linha do resultado como uma matriz associativa

mysql_fetch_assoc

Consulta e Exibio
<? $conexao = mysql_connect('localhost','root','') or die ("Erro ao efetuar conexo."); mysql_select_db("prog_web"); $result = mysql_query("SELECT * FROM pessoas",$conexao) or die (" ERRO na consulta " . mysql_error()); ?> <html> <head><title>CEFET-PHB</title></head> <body> <h1>Pessoas</h1> <table border="1"> <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>

Criao de Base de Dados


<?php $con = mysql_connect('localhost', 'root', ''); if (!$con) { die('No foi possvel 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

Conexo com a base de dados Lista todas as pessoas

pessoas_lista.php

pessoas_mostra.php pessoas_exclui.php pessoas_insere.php pessoas_form.php

Parte do formulrio 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 conexo.'); mysql_select_db('prog_web'); ?>

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><title>CEFET-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">Aes</th></tr> <? while($pessoa = mysql_fetch_array($result)) { ?> <tr> <td><?= $pessoa['nome'] ?></td> <td><?= $pessoa['fone'] ?></td> <td><?= $pessoa['email'] ?></td> <td><a href="pessoas_mostra.php?id=<?= $pessoa['id'] ?>">Mostra</a></td> <td><a href="pessoas_edita.php?id=<?= $pessoa['id'] ?>">Edita</a></td> <td><a href="pessoas_exclui.php?id=<?= $pessoa['id'] ?>" onclick="return confirm('Tem certeza?');">Exclui</a></td> </td> </tr> <? } ?> </table> <p><a href="pessoas_insere.php">Insere</a></p> </body> </html>

CRUD - pessoas_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><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="pessoas_lista.php">Volta</a></p> </body> </html>

CRUD - pessoas_exclui.php
<?php include_once('db_conecta.php'); $id = $_GET['id']; mysql_query("DELETE FROM pessoas where id='$id'",$conexao) or die (' ERRO na excluso: ' . 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("insert into pessoas (nome,fone,email) values ('{$pessoa['nome']}','{$pessoa['fone']}', '{$pessoa['email']}')") or die('Problema ao realizar operao: ' . mysql_error()); header("Location: pessoas_lista.php"); } ?> <html> <head><title>CEFET-PHB</title></head> <body> <h1>Pessoas - Insere</h1> <form action="pessoas_insere.php" method="post"> <?php include_once('pessoas_form.php'); ?> <p><input type="submit" value="Insere" /></p> </form> <p><a href="pessoas_lista.php">Volta</a></p> </body> </html>

CRUD - pessoas_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 - pessoas_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 operao: ' . mysql_error()); header("Location: pessoas_lista.php"); } ?> <html> <head><title>CEFET-PHB</title></head> <body> <h1>Pessoas - Edita</h1> <form action="pessoas_edita.php?id=<?= $_GET['id'] ?>" method="post"> <?php include_once('pessoas_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

Conexo com MySQL

Usar UNIX socket mais eficiente que usar a camada TCP/IP. Para a extenso mysql usar UNIX socket basta que esse recurso esteja disponvel e que o nome do host seja localhost:
mysql_connect('localhost','root', '');

Tambm possvel definir o acesso via UNIX Socket explicitamente:


mysql_connect('localhost:/var/run/mysqld/mysqld.sock', 'root', '');

Conexo com MySQL

mysql_pconnect

Abre uma conexo persistente com um servidor MySQL. Ao conectar, a funo tenta encontrar uma conexo que j esteja aberta. Se uma for encontrada, ser usada ao invs de abrir uma nova conexo. A conexo no ser fechada quando a execuo do script terminar.

Ela permanecer aberta para uso futuro mysql_close() no ir fechar conexes estabelecidas por mysql_pconnect().

Obtendo informaes
<?php $link = mysql_pconnect('localhost', 'root', ''); if (!$link) { die('Falha na conexo: ' . 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 execuo no prprio banco de dados. Reduz a possibilidade de SQL Injection.

Segurana

PDO

Interface comum para acesso a vrios 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 disponvel:
$con = new PDO('mysql:host=localhost;dbname=prog_web', 'root', '');

Pode-se tambm 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("SELECT * FROM pessoas "); $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 = "SELECT * FROM pessoas WHERE nome LIKE concat(:nome,'%')"; $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 informaes sobre PDO


<?php $con = new PDO('mysql:host=localhost;dbname=prog_web', 'root', '', array(PDO::ATTR_PERSISTENT => true)); $attributes = array( "AUTOCOMMIT", "ERRMODE", "CASE", "CLIENT_VERSION", "CONNECTION_STATUS", "ORACLE_NULLS", "PERSISTENT", "PREFETCH", "SERVER_INFO", "SERVER_VERSION", "TIMEOUT" ); foreach ($attributes as $val) { echo "PDO::ATTR_$val: "; echo $con->getAttribute(constant("PDO::ATTR_$val")) . '<br/>'; } ?>

Das könnte Ihnen auch gefallen