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 $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 OBSERVAO:

11

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 function operacao1( ) { } function operao2( ) { } } Construtores

12

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 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; } }

13

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

Filipe Costa Fernandes

PHP e MySQL Desenvolvimento Web $a->operacao1( ); $a->operacao2(12,teste);

14

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 Privilgios para administradores PRIVILGIO Reload Shutdown Process File

16

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 -> 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;

17

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 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;

19

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 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

20

[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 Limit 2, 3;

21

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 = > < >= <= 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. != ou <> IS NOT IS NULL BETWEEN IN NOT IN LIKE NOT LIKE REGEXP

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,...

23

MODIFY [coluna] descrio_da_coluna DROP [coluna] coluna DROP PRIMARY KEY DROP INDEX ndice RENAME [as] nome_da_nova_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

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.

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 2 Mecanismo PHP 3 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 echo </p>; } ?> </body> </html> CONFIGURANDO UMA CONEXO @ $db = mysql_pconnect(localhost, Usurio,Senha);

26

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 Mysql_free_result( $result )

28

Filipe Costa Fernandes

Você também pode gostar