Você está na página 1de 28

PHP e MySQL Desenvolvimento Web

PHP e MySQL
Desenvolvimento
Web

Autor:
Felipe Costa Fernandes
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

PHP e MySQL
Desenvolvimento Web
Luke Welling e Laura Thomson

O QUE PHP? .............................................................................................................. 2


O QUE MySQL?......................................................................................................... 3
INTEGRAO DE BANCO DE DADOS.................................................................... 3
VISO GERAL DO PHP .............................................................................................. 3
UTILIZANDO TAGS DE PHP...................................................................................... 4
COMENTRIOS ........................................................................................................... 4
ACESSANDO VARIVEIS DE FORMULRIO........................................................ 4
TIPOS DE DADOS DO PHP......................................................................................... 5
Transformando tipos de dados do PHP .......................................................................... 5
CONSTANTES .............................................................................................................. 5
OPERADORES ARITMTICOS .................................................................................. 5
Operador
Nome
Exemplo................... 5
OPERADORES DE COMPARAO DO PHP ........................................................... 5
Operador Nome Utilizao............................................................................................. 5
O OPERADOR TERNRIO ......................................................................................... 6
FUNES DO PHP....................................................................................................... 6
IF..................................................................................................................................... 6
WHILE ........................................................................................................................... 7
FOR ................................................................................................................................ 7
DO .. WHILE ................................................................................................................. 7
ARRAYS ........................................................................................................................ 7
SHUFFLE....................................................................................................................... 8
MANIPULAO DE STRING..................................................................................... 8
UNINDO E SEPARANDO STRING (Join, implode, explode) .................................... 9
ATUALIZANDO REGISTROS NO BANCO DE DADOS........................................ 21
O QUE PHP?
O PHP uma linguagem de criao de scripts do lado do servidor que foi projetada
especificamente para WEB. Dentro de uma pgina HTML, voc pode embutir cdigo de
PHP que ser executado toda vez que a pgina for visitada. Esse cdigo interpretado no
servidor da Web e gera HTML ou outra sada que o visitante ver.
O PHP foi concebido em 1994 e sua origem foi o trabalho de uma nica pessoa,
Rasmus Lerdorf. Essa linguagem foi adotada por outras pessoas inteligentes e passou por
trs importantes regravaes para nos proporcionar o amplo e aperfeioado produto que
vemos hoje.

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

O PHP um produto Open Source, ou seja, voc tem acesso ao cdigo-fonte.


possvel utiliza-lo, altera-lo e redistribu-lo, tudo sem taxa.
O PHP significava originalmente Personal Home Page, mas foi alterado de acordo
com a conveno para atribuio de nomes recursiva GNU (Gnu is Not Unix) e agora
significa Php Hypertext Preprocessor (processador de hipertexto php).
A home page do PHP est disponvel em http://www.php.net
A home page do Zend est disponvel em http://www.zend.com
O QUE MySQL?
O MySQL um sistema de gerenciamento de banco de dados relacional (relational
database management system RDBMS) poderoso e muito rpido. Um banco de dados
permite armazenar, pesquisar, classificar e recuperar dados eficientemente. O servidor de
MySQL controla o acesso aos dados para assegurar que mltiplos usurios possam
trabalhar co os dados ao mesmo tempo, fornecer acesso rpido aos dados e assegurar que
somente usurios autorizados possam obter acesso. Portanto, o MySQL um servidor
multiusurio e multiencadeado ( ou multithreaded). Ele utiliza a SQL (Structured Query
Language), a linguagem de consulta padro de banco de dados mundial. O MySQL est
publicamente disponvel desde 1996, mas tem uma histria de desenvolvimento que
remonta a 1979. Agora o MySQL ganhou o Linux Journal Readers Choice Award Linux
por trs anos consecutivos.
O MySQL est agora disponvel sob uma licena Open Source, mas licenas
comerciais tambm esto disponveis se requeridas.
INTEGRAO DE BANCO DE DADOS
O PHP tem conexes nativas disponveis para muitos sistemas de banco de dados.
Alm do MySQL, voc pode conectar-se diretamente a banco de dados PostgreSQL,
mSQL, Oracle, dbm, filePro, HyperWave, Infomix, InterBase e SyBase, entre outros.
Utilizando o Open Database Connectivity Standard (ODCS), voc pode conctar-se a
qualquer banco de dados que fornea um driver de ODCS. Isso inclui produtos da
Microsoft e muitos outros.
VISO GERAL DO PHP
Uma das aplicaes mais comuns de qualquer linguagem de criao de scripts de lado
do servidor processar formulrios de HTML.
A primeira coisa a saber que devemos configurar a ao do formulrio para ser o
nome do script de PHP que processar as informaes. Em geral, o valor do atributo
ACTION (em um arquivo HTML) o URL que ser carregado quando o usurio pressionar
o boto Submit. Os dados que o usurio digitou no formulrio sero enviados para este
URL via o mtodo especificado no atributo METHOD, um GET (acrescentado ao fim do
URL) ou POST (enviado como um pacote separado).
A segunda coisa a notar so os nomes dos campos de formulrio. Utilizaremos esses
nomes novamente no nosso script de PHP. Por causa disso importante dar nomes

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

significativos aos campos de formulrio dos quais voc possa facilmente se lembrar ao
comear a escrever o script de PHP.
Para embutir cdigo PHP em HTML devemos simplesmente escrever o cdigo PHP
dentro do arquivo HTML.
Ex:
<html><head>
<title> PHP e MySQL </title>
</head>
<body>
<h1> Meu primeiro programa </h1>
<?php
echo <p> Cdigo PHP em um arquivo HTML.;
?>
</body> </html>
UTILIZANDO TAGS DE PHP
O cdigo de PHP no exemplo anterior comeou com <?php e acabou com ?>. Isso
semelhante a todas as tags HTML porque todas comeam com um smbolo menor que (<) e
terminam com um smbolo maior que (>). Esses smbolos so chamados tags de PHP que
dizem ao servidor da Web onde o cdigo de PHP comea e onde termina. Qualquer texto
entre as tagas ser interpretado como PHP. Qualquer texto fora dessas tags ser tratado com
HTML normal.
COMENTRIOS
Os comentrios em PHP comeam com /* e terminam com */.
/* esta linha no ser processada pois est como comentrio */
ACESSANDO VARIVEIS DE FORMULRIO
Dentro do script de PHP, voc pode acessar cada um dos campos de formulrio como
uma varivel com o mesmo nome do campo de formulrio.
Ex:.
Em um arquivo HTML que tenha o seguinte campo de formulrio:
<input type=text name=teste size=20 maxlength=20>
Ao clicar em um boto submit e enviar estes dados para um arquivo PHP, o PHP
receber uma varivel de nome teste contendo o mesmo valor do campo de formulrio do
HTML.
As variveis so tratadas pelo PHP com um sinal de $ (cifro) no inicio. A varivel
teste do exemplo anterior ser tratada pelo PHP com $teste.

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

TIPOS DE DADOS DO PHP


O PHP suporta os seguintes tipos de dados:
Integer Utilizado para nmeros.
Double Utilizado para nmeros reais.
String Utilizado para strings de caracteres.
Array Utilizado para armazenar mltiplos itens de dados do mesmo tipo
(vetor e matriz)
Object Utilizado para armazenar instncias de Classes.
Transformando tipos de dados do PHP
Seja a varivel $total do tipo integer, para transforma-la em double usamos o seguinte
cdigo: $total = (double)$total;
CONSTANTES
Como voc viu anteriormente, podemos alterar o valor armazenado em uma varivel.
Tambm podemos declarar constantes. Uma constante armazena um valor como um
varivel, mas seu valor configurado uma vez e, ento, no pode ser alterado em outra
parte no script.
Declaramos uma constante de nome total e de valor 10:
Define(TOTAL,10);
As constantes no usam o sinal de cifro no seu inicio, veja:
Echo TOTAL;
OPERADORES ARITMTICOS

Operador

Nome

+
*
/
%

Adio
Subtrao
Multiplicao
Diviso
Mdulo

Exemplo
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b

OPERADORES DE COMPARAO DO PHP

Operador Nome Utilizao

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web


==
===
!=
<>
<
>
<=
>=

igual a
idntico a
no igual a
no igual a
menor que
maior que
menor que ou igual a
maior que ou igual a

6
$a = = $b
$a = = = $b
$a != $b
$a <> $b
$a < $b
$a > $b
$a <= $b
$a >= $b

O OPERADOR TERNRIO
Condio ? valor_se_true : valor_se_false
($total>60) ? Aprovado : Reprovado

FUNES DO PHP
Gettype($varivel) -> retorna um string com o nome do tipo da varivel.
Is_array($var), is_doubl($var), is_float($var), is_real($var), is_long($var),
is_int($var), is_integer($var), is_string($var), is_object($var) -> retorna true se $var for
desse tipo e false se no for.
IF
If ($total = = 0)
{
echo total igual a zero;
}
else
{
echo total no igual a zero;
}

SWITCH (CASE)
Switch($total)
{
case 0 :
echo total igual a zero;
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

break;
case 1 :
echo total igual a um;
break;
default :
echo total indefinido;
break;
}

WHILE
$num = 1;
while ($num <= 5)
{
echo $num . <BR>;
$num++;
}

FOR
For ($num = 1; $num <= 5; $num++)
{
echo $num . <BR>;
}

DO .. WHILE
$num = 1;
do
{
echo $num . <BR>;
$num++
} while ($num < 1);
ARRAYS
$vetor = array (um, dois, trs);
ou
$vetor[0] = um;
$vetor[1] = dois;
$vetor[2] = trs;
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

$vetor = array (um->1, dois->2);


ou
$vetor[um] = 1;
$vetor[dois] = 2;
MATRIZ
$matriz = array ( array (1,2,3), array(4,5,6), array(789));
SHUFFLE
A funo shuffle mistura os elementos de um vetor.
$nmeros = array (1,2,3,4,5,6,7,8,9);
shuffle($nmeros);
echo $numeos[1];
/*cada vez que passar por aqui vai imprimir um nmero diferente entre 1 e 9*/

MANIPULAO DE STRING
$texto . texto adicional -> contatena o contedo de $texto com texto adicional.
trim($texto) -> elimina os espaos em branco da esquerda e da direita de $texto.
ltrim($texto) -> elimina os espaos em branco somente da esquerda de $texto.
chop($texto) -> elimina os espaos em branco somente da direita de $texto.
strtoupper() -> deixa o texto em letras maisculas.
strtolower() -> deixa o texto em letras minsculas.
Ucfirst() -> coloca o primeiro caractere da string em maisculo.
Ucwords() -> coloca o primeiro caractere de cada palavras do texto em maisculo.

FORMATAO DE STRING PARA ARMAZENAMENTO EM BANCO DE


DADOS
Certos caracteres so perfeitamente vlidos como parte de uma string mas podem
causar problemas, particularmente ao inserir dados em um banco de dados porque o banco

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

de dados poderia interpretar esses caracteres como caracteres de controle. Os caracteres


problemticos so aspas simples e duplas, barra invertida (\) e o caractere NUL.
Para evitar esse problema adicione uma barra invertida na frente destes caracteres.
Por exemplo, no lugar de aspas duplas () use barra invertida aspa dupla (\).
No lugar de barra invertida (\) use barra invertida barra invertida (\\).
O PHP fornece duas funes para ajudar a resolver este problema, uma que coloca a
barras invertida (\) e outra que as tira.
AddSlashes($texto) -> formata $texto, colocando barra invertida (\) onde for
necessrio.
StripSlashes($texto) -> formata $texto, retirando as barras invertidas (\) de onde
AddSlashes colocou.
UNINDO E SEPARANDO STRING (Join, implode, explode)
Join(caracter_de_unio, $vetor); -> unir uma string
Ex.: $vetor[0] = Filipe;
$vetor[1] = Costa;
$vetor[2] = Fernandes;
$tudo = join(#,$vetor);
echo $tudo /*o resultado ser Filipe#Costa#Fernandes
A funo implode idntica a join.
Explode(caracter_de_unio,$vetor); -> separar uma string
Ex.: $vetor = explode(#,$tudo);
SUBSTR(string, inicio, comprimento) -> Retorna uma parte da string.
$parte = substr(Filipe,2,4) /*retorna de Filipe, a partir do segundo caracter, quatro
caracteres. Resultado lipe.
STRCMP(string1,string2) -> Compara igualdade entre duas strings. Se as strings
forem iguais, retorna zero (0). Se string1 for maior que string2, retorna um numero maior
que zero (0). Se string2 for maior que string1, retorna um numero menor que zero (0).
Strcmp(Filipe,$nome); //verifica se nome igual a Filipe.
STRCASECMP(string1,string2) -> igual a STRCMP, mas no faz distino entre
letras maisculas e minsculas, enquanto STRCMP faz.
STRLEN(str) -> Retorna o comprimento de str.

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

10

Echo strlen(Filipe); // ir imprimir 6.


STRSTR(palheiro,agulha) -> Procura por uma substring em uma string. STRSTR
procura por agulha em palheiro. Se STRSTR encontrar agulha em palheiro ela retorna
palheiro a partir de agulha para frente, caso contrario retorna false.
Srt = strstr(PHP-Nuke,PHP);
UTILIZANDO REQUIRE( ) E INCLUDE( )
Utilizando Require( ) e include( ) pode-se carregar uma arquivo no script de PHP.
As instrues require( ) e include( ) so muito semelhantes, mas existem algumas
diferenas importantes na maneira como elas funcionam.
Uma instruo include( ) avaliada toda vez que instruo executada e
simplesmente no ser avaliada se a instruo no for executada. Uma instruo require( )
executada a primeira vez em que instruo analisada sintaticamente, independentemente
de o bloco de cdigo que a contm ser execitado.
Ex.:
Require(nome_do_arquivo);
Require($var_com_o_nome_do_arquivo);
Include(nome_do_arquivo);
include($var_com_o_nome_do_arquivo);
A principal diferena entre include( ) e require( ) que include retorna 1 se for bem
sucedida ao tentar carregar o arquivo especificado e retorna 0 se no conseguir carregar o
arquivo especificado.

CHAMANDO FUNES
Para chamar uma funo com o PHP simplesmente digitamos o nome da funo
seguido de parnteses, e se a funo tiver parmetros e/ou retorno estes tambm devero ser
lembrados.
Ex.:
Funo simples:
nome_da_funo( );
Funo com um parmetro ou mais:
Nome_da_funo(lista de parmetros separados por virgula);
Funo com retorno:
$var = nome_da_funo( );

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

11

OBSERVAO:
Nomes de funes no fazem distino entre letras maisculas e minsculas, e nomes
de variveis fazem esta distino.
Ex.:
As funes somador( ), SoMaDoR( ) e SOMADOR( ), fazem referencia a
mesma funo.
As variveis total, ToTal e TOTAL, so trs variveis diferentes.
ESTRUTURA BSICA DA FUNO
Function nome_da_funo( )
{
echo corpo da funo;
}
function nome_da_funo( lista de parmetros)
{
echo corpo da funo;
return retorno;
}
function nome_da_funo( & lista de parmetros)
{
echo corpo da funo;
}
Observao: O & (e comercial) antes do nome do parmetro na declarao da funo
indica que este parmetro est sendo passado por referencia.
PHP ORIENTADO A OBJETOS
Estrutura de uma classe
Uma definio mnima de classe parecida com o seguinte:
Class classname
{
}
Para serem teis nossas classes precisam de atributos e operaes. Criamos atributos
declarando variveis dentro de uma definio de classe utilizando a palavra-chave var.
Ex.:
Class classname
{
var $atributo1;
var $atributo2;
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

12

function operacao1( )
{
}
function operao2( )
{
}
}
Construtores
A maioria das classes tem um tipo de operao chamada construtor. Um construtor
chamado quando um objeto criado e ele normalmente tambm realiza tarefas teis de
inicializao como configurar atributos como valores iniciais sensveis ou criar outros
objetos necessrios para esse objeto.
Um construtor declarado da mesma maneira como outras operaes, mas tem o
mesmo nome que a classe. Embora manualmente possamos chamar o construtor, seu
propsito principal ser chamado automaticamente quando um objeto criado.
Ex.:
Class classname
{
function classname ( $parametro )
{
echo Construtor chamado como o parmetro $parametro;
}
}
Para criarmos objetos de uma classe agimos da seguinte maneira:
$a = new classname(Primeiro);
A linha acima cria um objeto da classe classname, chamado de $a e passa o parmetro
primeiro para esta classe. Quando o objeto $a criado, automaticamente o construtor da
classe classname chamado e ele ecoar uma mensagem como a seguinte:
Construtor chamado com o parmetro Primeiro
UTILIZANDO ATRIBUTOS DE CLASSE
Dentro de uma classe temos acesso a um ponteiro especial chamado $this. Se um
atributo de sua classe atual se chama $atributo, podemos referenci-lo como $this->atributo
quando configurarmos ou acessarmos a varivel a partir de uma operao dentro da classe.
Var $atributo;
Function operao( $param )
{
$this->atributo = $param;
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

13

echo $this->atributo;
}
outro exemplo,
class classname
{
var $atributo;
}
$a = new classname( );
$a->atributo = valor;
echo $a->atributo;
outro exemplo,
class classname
{
var $atributo;
function get_atributo( )
{
return $this->atributo;
}
function set_atributo( $novo_valor )
{
$this->atributo = $novo_valor;
}
}

Chamando operaes de classe


Ex.:
Class classname
{
function operacao1( )
{
}
function operacao2( $param1, $param2 )
{
}
}
$a = new classname( );

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

14

$a->operacao1( );
$a->operacao2(12,teste);
se as operaes retornam algo, podemos capturar esses dados de retorno da seguinte
maneira:
$x = $a->operacao1( );
$y = $a->operacao2(12,teste);
IMPLEMENTANDO HERANA NO PHP
Se nossa classe deve ser uma subclasse de outra, voc pode utilizar a palavra-chave
extends para especificar isso. O prximo cdigo cria uma classe chamada B que herda de
alguma classe anteriormente definida chamada A.
Class B extends A
{
var $atributo2;
function operacao2( )
{
}
}
class A
{
var $atributo1;
function operacao1( )
{
}
}
todos os seguintes acessos a operaes e atributos de um objeto de tipo B seriam
vlidos:
$b = new B( );
$b->operacao1( );
$b->atributo1 = 10;
$b->operacao2( );
$b->atributo2 = 10;
A classe B pode referenciar operacao1( ) e $atributo1, mas a classe A no pode
referenciar operacao2( ) e $atributo2.

CRIANDO BANCO DE DADOS DA WEB


Como efetuar logon no MySQL
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

15

Para fazer isso, v para uma interface de linha de comando na sua mquina e digite o
seguinte:
> mysql h nome_do_host u nome_do_usurio -p
A opo h utilizada para especificar o host a que voc quer conectar-se; isto , a
mquina em que o servidor de MySQL est executando. Se estiver executando esse
comando na mesma mquina que o servidor de MySQL, voc pode omitir essa opo. A
opo u utilizada para especificar o nome do usurio e a opo p instrui o servidor ao
qual voc quer conectar-se utilizando uma senha.
Criando Banco de Dados e Usurios
Para criar um banco de dados devemos digitar a seguinte linha de comando no prompt
do MySQL:
Mysql> create database nomedodb;
Se tudo ocorreu bem, voc dever ver uma resposta parecida com a seguinte:
Query OK, 1 row affected (0.06 sec)
Isso significa que tudo funcionou bem.
Usurios e privilgios
O comando GRANT utilizado para criar usurios e fornecer privilgios. O
formulrio geral do comando GRNAT :
GRANT privilgios [colunas]
ON
item
TO
nome_do_usurio [IDENTIFIED BY senha]
[WITH GRANT OPTION]
as clusulas entre colchetes so opcionais.
Tipos e nveis de privilgios
PRIVILGIO
Select
Insert
Update
Delete
Index
Alter
Create
Drop

APLICA-SE A
Tabelas, colunas
Tabelas, colunas
Tabelas, colunas
Tabelas
Tabelas
Tabelas
Banco de dados, tabelas
Banco de dados, tabelas

DESCRIO
Fazer seleo
Fazer insero
Fazer alterao
Fazer deleo
Criar ou excluir ndices
Alterar estrutura de tabelas
Criar BDs e Tabelas
Excluir BDs ou tabelas

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

16

Privilgios para administradores


PRIVILGIO
Reload
Shutdown
Process
File

DESCRIO
Permite recarregar tabelas Grant e limpar privilgio, hosts, logs e tabelas.
Permite desligar o servidor de MySQL.
Permite visualizar processos de servidor e elimina-los.
Permite que os dados sejam lidos em tabelas a partir de arquivos e viceversa.

O comando REVOKE
REVOKE o oposto de GRANT. Esse comando utilizado para retirar privilgios de
um usurio. Sua sintaxe muito semelhante a de GRANT:
REVOKE privilgios [(colunas)]
ON item
FROM nome_do_usurio
Se voc concedeu a clusula WITH GRANT OPTION, pode revogar fazendo assim:
REVOKE GRANT OPTION
ON item
FROM nome_do_usurio <F?P14>
Exemplos utilizando GRANT e REVOKE
Para configurar um administrador, voc pode digitar:
Mysql> Grant all
-> on *
-> to Fred identified by mn123
-> With Grant Option;
Isso concede todos os privilgios em todos os bancos de dados a um usurio chamado
Fred com a senha mnb123 e permite a ele passar esses privilgios a outros usurios.
O exemplo abaixo mostra como retirar o usurio Fred:
Mysql> revoke all
-> on *
-> from Fred;
Agora vamos configurar um usurio regular sem privilgios:
Mysql> Grant usage
-> on books.*

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

17

-> to sally identified by magic123;


Para mudarmos os privilgios de sally agimos assim:
Mysql> Grant select, insert, update, delete, index, alter, create, drop
-> on books.*
-> to sally;
Para retirarmos alguns privilgios de sally, agimos assim:
Mysql> revoke alter, create, drop
-> on books.*
-> from sally;
E mais tarde, se sally no precisar mais utilizar o banco de dados, podemos revogar
seus privilgios de uma s vez, agindo assim:
Mysql> revoke all
-> on books.*
-> from sally;
Configurando um usurio para a Web
O exemplo abaixo mostra como configurar um usurio simples para utilizar nosso
banco de dados na Web:
Grant select, insert, delete, update
On books.*
To username identified by user_pass;

Utilizando o banco de dados correto


Para utilizarmos um banco de dados, devemos digitar a seguinte linha de comando:
Mysql> use data_base_name;
Mysql> use books;
Criando tabelas de banco de dados
Para criar uma tabela de banco de dados utilizamos o comando CREATE TABLE.
Ex.: CREATE TABLE nome_da_tabela ( colunas )
Podemos criar tabela de banco de dados atravs de um arquivo texto, veja:
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

18

> mysql h host u username dbname p < arquivo.sql


Exemplos de como usar o comando CREATE TABLE
Create table clientes
(
cliente_id int unsigned not null auto_increment primary key,
nome char(30) not null,
endereco char(40) not null,
cidade char(20) not null
);
Create table ordens
(
ordem_id int unsigned not null,
especificacao char(13) not null,
quantidade tinyint unsigned,
primary key (ordem_id, especificacao)
);
Veja o banco de dados com SHOW e DESCRIBE
Mysql> show tables;
O exemplo acima exibir uma lista com os nomes de todas as tabelas do banco de
dados atual.
Mysql> describe tabela;
O exemplo acima exibir os dados (campos) da tabela especificada.

INSERINDO DADOS NO BANCO DE DADOS


Para inserir dados em nosso banco de dados utilizamos a instruo INSERT de SQL.
A forma normal de uma instruo INSERT :
INSERT [INTO] tabela [(coluna1, coluna2,...)] VALUES (valor1, valor2,...);
Por exemplo, para inserir o nome, endereo, telefone e idade em uma tabela chamada
cliente, devemos agir da seguinte forma:
Insert into clientes values (Filipe,Ipatinga,(031)38261111,21);
Se quisermos inserir somente alguns itens, como por exemplo, nome e idade agimos
da seguinte maneira:

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

19

Insert into clientes ( nome, idade ) values (Filipe,21);


Podemos alcanar o mesmo objetivo com a seguinte linha de cdigo:
Insert into clientes set nome=Filipe, idade=21;
Observao: Quando temos um campo de auto_incremento em nosso banco de
dados, no precisamos inserir este campo ou inserimos como NULL.
Por exemplo:
Insert into clientes values (NULL,Filipe,Ipatinga,38261111,21);
Ou
Insert
into
clientes
(nome,
(Filipe,Ipatinga,38261111,21);

cidade,

telefone,

idade)

values

Se quisermos inserir mais de uma linha de uma s vez, devemos separar os valores
das linhas por virgula, como mostrado no exemplo abaixo:
Insert into clientes values
(Filipe,Ipatinga,38261111,21),
(Thiago,Ipatinga,38262222,18)
(Gildete,Sete Cachoeiras,38213333,42)
(Natan,Santana do Paraso,38224444,45);
Ou podemos inserir valores atravs de um arquivo com cdigos SQL:
> mysql h host u username p < arquivo.sql

Recuperando dados do banco de dados


Para recuperarmos dados de um banco de dados, usamos a instruo SQL SELECT.
A forma bsica de uma instruo SELECT mostrada abaixo:
SELECT itens
FROM tabelas
[ WHERE condio ]
[ GROUP BY tipo_de_grupo ]
[ HAVING definio_de_where ]
[ ORDER BY item_de_ordenao ]
[ LIMIT critrios_de_limite ] ;
A forma mais simples de uma consulta em SQL mostrada abaixo:
SELECT *
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

20

FROM tabela;
Onde (*) siginifica tudo (todos os campos existentes em tabela)
SELECT itens
Seleciona as colunas da tabela definidas em itens.
Ex.: select nome, idade
FROM tabelas
Determina que tabelas sero usadas na consulta.
Ex.: from clientes, fornecedores
[ WHERE condio ]
Determina a condio para seleo.
Ex.: where clientes.cdigo = fornecedores.cdigo and clientes.nome=Filipe
[GROUP BY tipo_de_grupo ]
Nos fornece o resultado da consulta em grupos. Como por exemplo, se eu quero saber
o valor total das compras realizadas por um determinado cliente, eu fao a consulta com um
GROUP BY por nome de clientes.
Ex.: group by clientes.nome
[ HAVING definio_de_where ]
Alm de agrupar e agregar dados, podemos realmente testar o resultado de um
agregado utilizando uma clusula HAVING. Isso vem logo depois da clusula GROUP BY
e como uma WHERE que se aplica somente a grupos e agregados. Para estender nosso
exemplo anterior, se quisermos saber quais clientes tem um total de compras maior que
R$50, podemos utilizar a seguinte consulta:
Select C.nome, sum(CO.valor)
From clientes as C, compras as CO
WHERE C.cdigo = CO.cdigo
GROUP BY C.nome
HAVING sum(CO.valor) > 50;

[ ORDER BY item_de_ordenao ]
Ordena os dados da consulta em ordem crescente ou decrescente, definidos por ASC
(crescente) ou DESC (decrescente).
Ex.: ORDER BY nome asc
ou
ORDER BY nome desc
[ LIMIT critrios_de_limite ] ;
utilizada para especificar quais linhas da sada devem ser retornadas. Essa clusula
aceita dois parmetros: o nmero de linha a partir do qual iniciar e o nmero de linhas para
retornar.
Ex.: Select nome
From clientes
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

21

Limit 2, 3;
Essa consulta pode ser lida como: Selecione nome de clientes e ento retorne 3
linhas, iniciando da linha 2 na sada. Note que os nmeros de linhas comeas a partir de
zero.
Operadores de comparao teis para a clusula WHERE
=
>
<
>=
<=

!= ou <>
IS NOT
IS NULL
BETWEEN
IN

NOT IN
LIKE
NOT LIKE
REGEXP

Agrupando e agregando dados


NOME
AVG(coluna)
COUNT(item)

DESCRIO
Mdia de valores na coluna especificada
Se especificarmos uma coluna, essa funo fornecer o n de valores
no nulos nessa coluna. Se adicionar a palavra DISTINCT na frente do
nome de coluna, voc obter uma contagem dos valores distintos
somente nessa coluna. Se especificar COUNT(*), obter uma contagem
de linha independentemente dos valores nulos (NULL).
MIN(coluna)
O valor mnimo na coluna especificada.
MAX(coluna)
O valor mximo na coluna especificada.
STD(coluna)
Desvio padro dos valores na coluna especificada.
STDDEV(coluna) O mesmo que STD(coluna).
SUM(coluna)
Soma de valores na coluna especificada.

ATUALIZANDO REGISTROS NO BANCO DE DADOS


Para atualizarmos dados em nosso banco de dados usamos a instruo SQL
UPDATE.
A forma normal de uma instruo UPDATE :
UPDATE nome_da_tabela
SET coluna1=expresso1, coluna2=expresso2,...
WHERE condio
LIMIT nmero ;
A idia bsica atualizar a tabela chamada nome_da_tabela, configurando cada uma
das colunas chamadas como a expresso apropriada. Voc pode limitar uma UPDATE a
linhas particulares com uma clusula WHERE e limitar o nmero total de linhas para afetar
com uma clusula LIMIT.
Vejamos alguns exemplos.

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

22

UPDATE livros
Set precos = precos*1.1
O exemplo acima faz uma modificao na tabela livros, aumentando em 10% o preo
de todos os livros.
UPDATE cliente
SET telefone = 38263333
WHERE nome = Filipe;
O exemplo acima altera o telefone do cliente que se chama Filipe.
Alterando tabelas depois da criao
Para alterarmos a estrutura de uma tabela temos o instruo ALTER TABLE.
Sua forma bsica :
ALTER TABLE nome_da_tabela alterao1, alterao2,...
Obs.: Podemos fazer somente uma alterao por instruo ALTER TABLE, mas
podemos us-la quantas vezes quisermos.
Os diferentes tipos de alterao que podemos fazer com essa instruo so mostrados
abaixo.

SINTAXE
ADD [coluna] descrio_da_coluna
[FIRST | AFTER coluna] como

DESCRIO
Adiciona uma nova coluna na localizao
especificada (se no especificada, a coluna
entra
no
final).
Note
que
as
descries_da_coluna precisam de um nome
e um tipo, exatamente como uma instruo
CREATE.
ADD
[coluna]
(descrio_da_coluna, Adiciona uma ou mais colunas novas no fim
descrio_da_coluna,...)
da tabela.
ADD INDEX [ndice] (coluna,...)
Aa um ndice tabela na coluna especificada
ADD PRIMARY KEY (coluna,...)
Torna a coluna especificada a chave primria
da tabela.
ADD UNIQUE [ndice] (coluna,...)
Adiciona um ndice tabela na coluna
especificada.
ALTER [coluna] coluna (SET DEFAULT Adiciona ou remove um valor padro de

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web


valor | DROP DEFAULT)
CHANGE [coluna] coluna
Descrio_da_nova_coluna,...

MODIFY [coluna] descrio_da_coluna


DROP [coluna] coluna
DROP PRIMARY KEY
DROP INDEX ndice
RENAME [as] nome_da_nova_tabela

23

uma coluna particular.


Altera a coluna chamada [coluna] para que
ela tenha a descrio listada. Observe que
isso pode ser utilizado para alterar o nome de
uma
coluna
porque
uma
descrio_da_coluna inclui um nome.
Semelhante a CHANGE, mas no altera o
nome.
Exclui a coluna.
Exclui o ndice primrio (mas no a coluna).
Exclui o ndice identificado.
Renomeia uma tabela.

Vejamos alguns exemplos.


Alter table clientes
Modify nome char(45) not null;
Alter table pedidos
Add taxa float(6.2) after valor;
Alter table pedidos
Drop taxa;
Excluindo registros do banco de dados
Excluir linhas do banco de dados muito simples. Voc pode fazer isso utilizando a
instruo DELETE, que geralmente assim:
DELETE FROM tabela
WHERE condio
LIMIT nmero
Se voc escrever DELETE FROM TABELA apenas, todas as linhas da tabela sero
excludas, ento tenha cuidado!
A clusula LIMIT pode ser utilizada para limitar o nmero mximo de linhs que sero
realmente excludas.
Ex.:
Delete from clientes
Where codigo=5;
Excluindo tabelas e bancos de dados
Para excluir tabelas usamos a instruo DROP TABLE, que parecida com:
DROP TABLE tabela;

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

24

Para excluir bancos de dados usamos a instruo DROP DATABASE, que parecida
com:
DROP DATABASE banco_de_dados;

ACESSANDO SEU BANCO DE DADOS MySQL A PARTIR DA WEB COM O


PHP
A arquitetura bsica de um banco de dados da Web consiste no navegador da Web,
servidor da Web, mecanismo de criao de script e servidor de banco de dados. Veja a
ilustrao abaixo.
1

Navegador

Servidor
WEB

Mecanismo
PHP

MySQL
Server

abaixo segue um exemplo (em forma de codigo) de como podemos acessar uma
banco de dados MySQL a partir da WEB com o PHP.
<Arquivo procura.html>
<html>
<head>
<title> Procura por livros </title>
</head>
<body>
<h1> Livraria PHP Catalogo de procura </h1>
<form action=resultado.php method=post>
Escolha o tipo da pesquisa: <br>
<select name=tipo>
<option value=autor> Autor
<option value=titulo> titulo
<option value=codigo> codigo
</select>
<br>
Digite o termo de pesquisa: <br>
<input name=pesquisa type=text>
<br>
<input type=submit value=Pesquisar>
</form>
</body>
</html>

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

25

Este cdigo nos mostra um formulrio com um Combobox para escolhermos o tipo, e
um edit para digitarmos os parametros para a pesquisa. E por fim um boto para pesquisar.
Ou clicarmos neste boto ser chamado o arquivo resultado.php, e seu cdigo mostrado
abaixo.
<resultado.php>
<html>
<head>
<title> Procura por livros </title>
</head>
<body>
<h1> Livraria PHP Catalogo de procura </h1>
<?php
trim($pesquisa);
if (!$tipo || !$pesquisa )
{
echo Informe todos os campos. Volte e os digite.;
exit;
}
$tipo = addslashes($tipo);
$pesquisa = addslashes($pesquisa);
@ $db = mysql_pconnect(localhost,banco_de_dados,senha);
if (!$db)
{
echo Erro: No conectado ao banco de dados;
exit;
}
mysql_select_db(banco_de_dados);
$query = select * from livros where .$tipo. Like %.$pesquisa.%;
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
for ($i=0;$i<num_result;$i++)
{
$linha = mysql_fetch_array($result);
echo <p><strong>.($i+1).. Titulo: ;
echo htmlspecialchars( stripslashes($linha[titulo]));
echo </strong><br>Autor: ;
echo htmlspecialchars( stripslashes($linha[autor]));
echo <br> Codigo: ;
echo htmlspecialchars( stripslashes($linha[codigor]));
echo <br> Preo: ;
echo htmlspecialchars( stripslashes($linha[preco]));
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

26

echo </p>;
}
?>
</body>
</html>
CONFIGURANDO UMA CONEXO
@ $db = mysql_pconnect(localhost, Usurio,Senha);
Esta funo retorna um identificador de link para seu banco de dados do MySQL em
caso de sucesso ou falso em caso de falha.
Para realizar conexes com banco de dados temos duas funes, mysql_pconnect( ) e
mysql_connect( ). A diferena que mysql_pconnect( ) retorna uma conexo persistente
para o banco de dados.
Uma conexo normal para o banco de dados ser fechada quando um script concluir a
execuo ou quando o script chamar mysql_close( ). A conexo persistente permanece
aberta depois que o script conclui a execuo e no pode ser fechada com a funo
mysql_close( ).
Fazer uma conexo com um banco de dados envolve uma certa quantidade de
overhead e, portanto, leva algum tempo. Quando mysql_pconnect( ) chamado, antes de
tentar conectar-se ao banco de dados, ele automaticamente verificar se j no h uma
conexo persistente aberta. Se houver, ele utilizar essa em vez de abrir uma nova. Isso
economiza tempo e overhead de servidor.
ESCOLHENDO UM BANCO DE DADOS PARA UTILIZAR
Podemos escolher o banco de dados que queremos utilizar com a funo
Mysql_select_db(banco_de_dados);
CONSULTANDO O BANCO DE DADOS
Para realizar uma consulta utilizamos a funo mysql_query( ), mas, antes bom
configurarmos a consulta que desejamos executar:
$query = select * from livros;
Agora podemos executar a consulta:
$result = mysql_query($query);
ou podemos utilizar a funo
mysql_db_query,
Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

27

Esta funo muito semelhante a anterior, mas permite especificar o banco de dados
em que voc gostaria de executar a consulta. Essa funo como uma combinao das
funes mysql_select_db( ) e mysql_query( ).
RECUPERANDO RESULTADOS DA CONSULTA
Para recuperar o resultado da consulta usaremos duas funes: mysql_num_rows( ) e
mysql_fetch_array( ).
A funo mysql_num_rows( ) fornece o nmero de linhas retornadas pela consulta.
$num_results = mysql_num_rows( $result );
A funo mysql_fetch_array( ) retorna cada linha da consulta em um array
associativo, com cada chave um nome de atributo e com cada valor o valor correspondente
no array.
$row = mysql_fetch_array( $result );
Para acessarmos o campo nome resultante desta consulta usamos o seguinte comando
$row[nome];
H diversas variaes quanto ao mtodo de obter resultados a partir de um
identificador de resultado. Em vez de um array associativo, podemos recuperar os
resultados em um array enumerado com mysql_fetch_row( ), da seguinte maneira:
$row = mysql_fetch_row( $result );
Para acessarmos um campo resultante desta consulta usamos o nmero referente ao
campo desejado. Por exemplo, se o campo nome for o primeiro campo da tabela usamos o
seguinte comando:
$row[0];
DESCONECTANDO-SE DO BANCO DE DADOS
Para fechar uma conexo com o banco de dados usamos
Mysql_close( nome_da_conexo )
LIBERANDO ESPAO
Para liberar espao em memria usamos mysql_free_result. Esta funo libera a
memria utilizada para armazenar o resultado de uma consulta.

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web

28

Mysql_free_result( $result )

Filipe Costa Fernandes

Você também pode gostar