Apostila Completa de PHP Linux.pdf

June 16, 2018 | Author: Wanderson Oliveira | Category: Web Server, World Wide Web, Technology, Php, Hypertext Transfer Protocol
Share Embed Donate


Short Description

Download Apostila Completa de PHP Linux.pdf...

Description

500 Desenvolvimento Web com PHP

www.4linux.com.br

Capítulo 1 Introdução

4Linux – www.4linux.com.br

Introdução

1.1 Sobre o curso Neste curso iremos aprender o que é o PHP, entender como a linguagem funciona e conhecê-la a fundo. O curso é recomendado para qualquer um interessado em começar a desenvolver aplicações para a web. Se você já possui experiência com alguma outra linguagem de programação, você entenderá os conceitos apresentados aqui rapidamente, mas o curso e a apostila irão assumir que você não possui nenhuma experiência com desenvolvimento de software. O curso Desenvolvimento Web com PHP (500) é o primeiro curso da Formação PHP da 4Linux. Este curso de PHP foi desenvolvido para apresentar o poder do PHP a quem teve algum contato com a linguagem ou programadores PHP que desejam aprimorar seus conhecimentos e se atualizar. Ao longo do curso de PHP da 4Linux serão desenvolvidos dois projetos: um microblog (similar ao Twitter) e um sistema de blog (similar ao Wordpress), conhecendo a fundo e aplicando as funcionalidades da linguagem PHP. Além de preparar o aluno para o mercado de trabalho, as aulas são estruturadas de forma que durante todo curso o aluno receba dicas e macetes relacionadas a parte do conteúdo para a Certificação Zend PHP 5.3. Com os três cursos da Formação PHP da 4Linux o aluno tem 100% do conteúdo necessário para a prova da Certificação Zend. PHP 5.3. Durante as aulas o instrutor apresentará conceitos e através de exercícios práticos fixará o conteúdo. Ao final deste curso o aluno estará pronto para criar aplicações web com a linguagem de programação PHP, utilizando os principais bancos de dados open source como MySQL, PostgreSQL e SQLite, além de conhecer e poder decidir qual a melhor ferramenta para o trabalho certo.

Desenvolvimento Web com PHP

Página 2

4Linux – www.4linux.com.br

Introdução

1.2 Sobre a 4Linux Há mais de 10 anos a 4Linux oferece cursos, soluções e serviços de T.I. baseados em softwares livres e padrões abertos para ambientes de missão crítica. Já treinou mais de 40.000 alunos e possui a maior oferta mundial de cursos baseados em softwares livres (mais de 50 cursos) nas modalidades presenciais e e-learning (à distância pela internet). Desde 2006 presta suporte a softwares livres em ambientes de missão crítica para a Caixa Econômica Federal, um dos principais cases mundiais de uso de padrões abertos: atualmente quando um cidadão faz uma aposta nas loterias, saca um dinheiro em um ATM (caixa eletrônico), recebe um SMS com o saldo de seu FGTS ou simula o valor de um financiamento imobiliário no ’feirão’ da casa própria, ele está usando uma infraestrutura baseada em softwares livres com serviços prestados pela 4Linux. Além da Caixa a 4Linux realizou algumas das mais conhecidas implementações de software livre do Brasil, entre eles: Metrô de São Paulo, Casa da Moeda do Brasil, Ceagesp e Projeto CDTC (Centro de Difusão de Tecnologia e Conhecimento) – uma parceria entre a IBM e o ITI – que envolveu, entre outras ações, a maior capacitação em Linux do Brasil: 785 educadores do MEC foram treinados em Linux pela 4Linux. Conheça nossos cases e clientes. Idealizadora do HackerTeen – projeto de edutainment (entretenimento educacional) para jovens da geração internet sobre segurança da computação, empreendedorismo na Internet e ética hacker – que, com uma metodologia inovadora, foi avaliado como “primeiro e único no mundo” pela Harvard Business School.

Desenvolvimento Web com PHP

Página 3

4Linux – www.4linux.com.br

Introdução

1.3 Aula Zero O foco principal do PHP como linguagem é a web, portanto, é necessário que você tenha um conhecimento sobre outras tecnologias para a web, como HTML e CSS. Além disso, para facilitar seu aprendizado, ter boas noções de lógica de programação é ideal. Para suprir essa necessidade a 4Linux preparou o Aula Zero, um conteúdo digital exclusivo com tudo que você precisa saber sobre lógica de programação, HTML e CSS.

Desenvolvimento Web com PHP

Página 4

4Linux – www.4linux.com.br

Introdução

1.4 A linguagem PHP Sem mais delongas, bem-vindo ao mundo do PHP, a 5º linguagem de programação mais utilizada no mundo segundo o TIOBE e a mais popular no desenvolvimento de aplicações para web. Segundo o Netcraft, mais de 30 milhões de servidores web possuem o PHP instalado. Se formos pensar em grandes casos de uso, podemos citar os gigantes Yahoo, Wikipedia, Facebook, Flickr, Digg, entre outros. Com o lançamento da versão 5.3, o PHP nunca esteve mais pronto para o desenvolvimento sério e robusto de aplicações, contando com um suporte sólido e moderno ao paradigma de programação orientada a objetos e inúmeras extensões disponíveis para diversas tecnologias. O PHP surgiu em meados de 1994, criado por Rasmus Lerdorf como um pacote de programas CGI. Em 1997, dois desenvolvedores israelitas, Zeev Suraski e Andi Gutmans, entraram no projeto e reescreveram grande parte do código do PHP. Junto com Rasmus, lançaram a versão 3.0 do PHP em junho de 2008. Para a próxima versão, Zeev e Andi decidiram reescrever o core do projeto do zero, chamando-o de Zend Engine. Esta nova versão, PHP 4, foi lançada em maio de 2000, contando com funcionalidades novas como gerenciamento de sessão, buffer de saída e suporte a vários servidores web. Infelizmente, a versão 4 ainda sofria com uma péssima implementação do paradigma de programação orientada a objetos, então em julho de 2004, foi lançada a versão 5 do PHP, que trouxe várias novidades para a linguagem e um jeito completamente novo de programar PHP.

Desenvolvimento Web com PHP

Página 5

Capítulo 2 Servidor Web

4Linux – www.4linux.com.br

Servidor Web

2.1 Como funciona um servidor web Um servidor web é um programa de computador, responsável por receber requisições do protocolo HTTP, tomar ações com base nessas requisições e enviar respostas também no protocolo HTTP. Por exemplo, quando digitamos uma URL em nosso browser, estamos pedindo um arquivo que está em algum computador com um servidor web instalado. Este computador pode estar localizado na casa ao lado ou em um gigantesco datacenter. O servidor web irá interpretar seu pedido, localizar a página no sistema de arquivos da máquina e entregar o conteúdo da página para seu navegador, que irá intepretar o código HTML da página e mostrá-lo para você. No caso de arquivos de música, vídeo, etc, o navegador vai oferecer o download ao invés de mostrar o conteúdo.

Desenvolvimento Web com PHP

Página 7

4Linux – www.4linux.com.br

Servidor Web

2.2 Como funciona o PHP Quando uma página é requisitada ao nosso servidor web, ele irá procurar pela página requisitada no sistema de arquivos, e caso ele encontre, o conteúdo desta página será exibido. Se esta página possuir hipertexto (HTML), vocês já sabem o que acontece: teremos uma página web sendo exibida. O PHP funciona como uma etapa extra. Caso uma página PHP seja requisitada, o servidor web irá procurar pela página no sistema de arquivos e, caso exista algum código PHP dentro desta, ele irá chamar o PHP, que interpretará o código e retornará os dados. A sigla PHP é um acrônimo recursivo que significa PHP: Hypertext Preprocessor, que mostra claramente o intuito da linguagem processar informações e gerar hipertexto (HTML). Abaixo podemos ver um exemplo de uma página HTML simples:

1



2



3

< title > Teste

4



5



6

Hoje é dia 10/10/2010

7



8



E aqui, um exemplo do PHP em ação:

1



2



3

< title > Teste

4



5



6

Hoje é dia

Existem também outras tags, como as short tags:

1



As ASP tags, "roubadas"do ASP:

1



E também, a tag :

1

< script language = " php " >

Desenvolvimento Web com PHP

Página 13

4Linux – www.4linux.com.br

PHP

• As short tags () precisam ser ativadas no arquivo de configuração do PHP antes de serem utilizadas. A opção é short_open_tags. O seu uso, no entanto, não é recomendado, já que elas conflitam com as tags de XML e foram depreciadas em versões futuras. • As tags ASP e script serão depreciadas nas versões futuras do PHP, portanto, não as use! • Caso você esteja criando uma página que só possua código PHP, não é necessário utilizar a tag de fechamento (?>). Olá Mundo Em todos os cursos de programação, temos um exemplo cujo objetivo é ensinar o aluno a colocar um texto na tela. Não podemos fazer diferente! O código abaixo faz uso do comando echo, que permite que você envie dados para a tela. A tela, no nosso caso, é o navegador. Note que o comando print faz a mesma coisa que o echo.

1



O código acima irá exibir:

1

array (

2

0 => 1,

3

1 => 2,

4

2 =>

5

array (

Desenvolvimento Web com PHP

Página 60

4Linux – www.4linux.com.br

6

0 => ’a ’ ,

7

1 => ’b ’ ,

8

2 => ’c ’ , ),

9 10

Funções Nativas

)

Desenvolvimento Web com PHP

Página 61

4Linux – www.4linux.com.br

Funções Nativas

4.2 Funções para strings O PHP possui muitas funções nativas para se trabalhar com strings e manipulá-las. A partir de agora, veremos algumas dessas funções, exemplos de como trabalhar com elas, e ver como elas são úteis no dia a dia de um programador PHP.

4.2.1 Função printf A função printf permite que formatemos uma string de diferentes formas.

1



Desenvolvimento Web com PHP

Página 69

4Linux – www.4linux.com.br

Funções Nativas

8 9

// Sa í da : Array ( [0] = > O [1] = > i [2] = > , [3] = > [4] = > t [5] = > u [6] = > d [7] = > o [8] = > [9] = > b [10] = > e [11] = > m [12] = > ? )

Já neste segundo exemplo, estamos indicando que queremos separar os caracteres de 5 em 5:

1



8 9

// Sa í da : Array ( [0] = > Oi , t [1] = > udo b [2] = > em ? )

4.2.14 Função str_repeat

Esta é uma função simples, que repete a string de acordo com o valor indicado.

1



4 5

Sa í da : @@@@@@@@@@

Desenvolvimento Web com PHP

Página 70

4Linux – www.4linux.com.br

Funções Nativas

4.2.15 Função str_pad A função str_pad preenche uma string com espaços em branco ou determinados caracteres afim de que a string fique com o tamanho desejado.

1



Observe que para verificar se a saída está correta você precisa ver o código fonte da página! Podemos também escolher em que posição ficará e quais serão os caracteres de preenchimento:

1



4.2.16 Função str_shuffle Esta função recebe uma string e tem como retorno o contúdo desta string, porém com seus caracteres misturados.

1



14 15

// Sa í da : A string ’a ’ foi encontrada na string ’ abcdeABCDEabcdeABCDE ’ e existe na posi ç ã o 15

Perceba então, que o caracter ’a’ apesar está na posição 0, 5, 10 e 15, é apresentado como última ocorrência na posição 15, mesmo que o ’A’ que está na posição 15 esteja em maiúsulo.

4.2.25 Função stripos Faz a mesma coisa que a função strpos, porém não é case sensitive. Ou seja, irá pesquisar pela primeira ocorrência de um caracter em uma string, ignorando se a letra está maiúscula ou minúscula.

1



No exemplo acima, a função cubo recebe um valor como parâmetro e retorna seu valor multiplicado por ele mesmo três vezes. Isso eqüivale ao número ao cubo. Logo depois encontramos um arras denominado $a com 5 valores. Abaixo encontramos um arras $b que chama a função array_map. Esta função está chamando a função cubo e passando o array $a para que cada número dentro deste array seja calculado dentro da função cubo. Como resultado, encontramos:

1

Array ( [0] = > 1 [1] = > 8 [2] = > 27 [3] = > 64 [4] = > 125 )

4.3.3 Função array_filter A função array_filter, filtra o conteúdo de um array de acordo com a ação de alguma função.

1



Onde 0 indica o índice do primeiro valor e 3 indica o número de itens que deve ser apresentado. Saída:

1

Array

2

(

3

[0] = > a

Desenvolvimento Web com PHP

Página 91

4Linux – www.4linux.com.br

4

[1] = > b

5

[2] = > c

Funções Nativas

6 7

)

4.3.14 Função array_splice Esta função remove uma parte do vetor e subsitui com outros valores.

1



Saída:

Desenvolvimento Web com PHP

Página 92

4Linux – www.4linux.com.br

1

Array

2

(

3

[0] = > abacaxi

4

[1] = > banana

5

[2] = > ma ç ã

6

[3] = > mam ã o

7

[4] = > cereja

8

Funções Nativas

)

4.3.16 Função array_sum Função simples, que retorna a soma dos valores do vetor.

1



8

< form action = " teste . php " method = " POST " >

9 10 11

< input type = " text " name = " meunome " / > < input type = " submit " value = " Enviar " / >

5.6.5 $_SESSION Contém variáveis definidas durante a sessão do navegador. Deve ser usada junto com a função session_start().

1



8



9



10

Meu formul á rio

11 12

< form action = " " method = " POST " >

13

< label > Nome : < input type = " text " name = " nome " / >

14

< label > Email : < input type = " text " name = " email " / >

15



16

< input type = " submit " value = " Enviar " / >

17



18 19



20



Note que o campo action está vazio. Quando o campo action de um formulário está

Desenvolvimento Web com PHP

Página 112

4Linux – www.4linux.com.br

Funcionalidades Web

vazio, ele irá fazer a requisição para a própria página. Note também que temos uma condição envolvendo nosso echo. Essa condição serve para executarmos aquele bloco de código somente quando recebermos uma requisição POST. Mas porque isso? Porque não queremos acessar a variável superglobal $_POST sem que ela possua valores, senão, teremos alguns erros em nossa página.

Desenvolvimento Web com PHP

Página 113

Capítulo 6 Banco de Dados

4Linux – www.4linux.com.br

Banco de Dados

6.1 O que é um banco de dados? Durante a maior parte do tempo como um desenvolvedor, você irá criar ou encontrar aplicações que utilizam alguma forma de armazenamento de dados. Estes dados podem estar sendo armazenados em simples arquivos no sistema de arquivos de máquina, ou podem estar sendo armazenados em estruturas mais complexas como um banco de dados. Bancos de dados, em sua grande maioria, são constituídos com base nas relações existentes entre suas entidades, dando o nome de bancos de dados relacionais. Um banco de dados é um conjunto de registros organizados em uma estrutura prédefinida. Ele é composto de tabelas, linhas e colunas. As tabelas são como pastas, onde guardamos vários tipos de informações. Linhas são os registros dentro dessas "pastas"e as colunas são tipos de informações que as linhas possuem. Em outras palavras, as colunas definem a estrutura dos dados e as linhas são os dados em si.

Desenvolvimento Web com PHP

Página 115

4Linux – www.4linux.com.br

Banco de Dados

6.2 O que é SQL? SQL, conhecida como Structured Query Language, é uma linguagem de programação declarativa, criada para gerenciar informações em um sistema gerenciador de banco de dados. É com a SQL que podemos criar, alterar, remover e ler informações de nosso banco de dados. Existem dois grandes tipos de comandos SQL: uma declaração e uma consulta. Em uma consulta, ou query, especificamos cláusulas e expressões para ler informações do banco. Em uma declaração, fazemos o mesmo, mas com o objetivo de executar algo (como uma remoção, alteração, etc.).

Desenvolvimento Web com PHP

Página 116

4Linux – www.4linux.com.br

Banco de Dados

6.3 MySQL

O MySQL é um sistema de gerenciamento de banco de dados, que utiliza a linguagem SQL como interface. Ele foi inventado em 1994 e sua primeira versão lançada em 1995. Desde o surgimento do PHP 3, o MySQL tornou-se um fiel aliado, sendo usados juntos na maioria dos projetos para web. Um banco de dados é nada mais, nada menos, que um conjunto de registros organizados. Desde a versão 3, o PHP possui um suporte muito sólido ao MySQL. Hoje, na versão 5, existem três formas de nos comunicarmos com um banco de dados MySQL. Existe a extensão MySQL clássica, que existe desde a versão 3, e existe também a extensão MySQL Improved (mysqli), adicionada na versão 5. E, é claro, a extensão PDO (PHP Data Objects), também adicionada na versão 5. Neste curso, aprenderemos a trabalhar com a extensão clássica. No segundo curso da Formação PHP da 4Linux trabalharemos com o PDO.

6.3.1 Instalando o MySQL

A grande maioria das distribuições Linux possuem pacotes do MySQL em seus repositórios. Isso nos ajuda muito e torna a instalação do MySQL muito simples e rápida. Abra o shell, logue como root e use o gerenciador de pacotes para instalar o MySQL:

1

su

2

apt - get update

3

apt - get install mysql - server

Durante a instalação o MySQL irá pedir para você definir uma senha padrão para o usuário root no MySQL. Escolha uma senha ou coloque 123456.

Desenvolvimento Web com PHP

Página 117

4Linux – www.4linux.com.br

Banco de Dados

6.3.2 Trabalhando com o MySQL Podemos trabalhar com o MySQL através da linha de comando ou através de aplicativos gráficos, que facilitam a administração de bancos de dados. Mas, antes de conhecer as ferramentas gráficas e suas vantagens, vamos ver como podemos trabalhar com o MySQL através do shell. Abra o shell e inicie o MySQL:

1

mysql -u root -p

O MySQL irá pedir a senha do usuário root. Por padrão, essa senha é definida por você durante a instalação do MySQL. Uma vez dentro do shell do MySQL, podemos começar a interagir com o sistema gerenciador de banco de dados utilizando a linguagem SQL. Antes de trabalharmos em um banco de dados, precisamos selecionálo para uso. No mySQL, fazemos isso utilizando o comando USE:

1

USE nomedobanco ;

Desenvolvimento Web com PHP

Página 118

4Linux – www.4linux.com.br

Banco de Dados

6.4 PostgreSQL

O PostgreSQL é um poderoso sistema gerenciador de banco de dados objeto-relacional de código aberto e 100% livre. O PostgreSQL é considerado o banco de dados livre mais avançado do mundo por várias razões. Suporta largamente os padrões ANSI-SQL 92/99 e respeita a normativa ACID. É altamente extensível, tem vários tipos de índices para diversos tipos de aplicações. Ele é utilizado em larga escala por empresas como Skype, Caixa Econômica Federal e Datasus.

O PHP trabalha muito bem com o PostgreSQL e, assim como o MySQL, possui extensões nativas para trabalhar com ele. Existem duas formas de nos comunicarmos com um banco de dados PostgreSQL: a primeira, utilizando a extensão pgsql, e a segunda, utilizando o PDO. Neste curso vamos conhecer a extensão pgsql e como usá-la para fazer nossas aplicações interagirem com um banco de dados PostgreSQL.

6.4.1 Instalando o PostgreSQL

A grande maioria das distribuições Linux possuem pacotes do PostgreSQL em seus repositórios. Isso nos ajuda muito e torna a instalação do PostgreSQL muito simples e rápida. Abra o shell, logue como root e use o gerenciador de pacotes para instalar o PostgreSQL:

1

su

2

apt - get update

3

apt - get install postgresql

Desenvolvimento Web com PHP

Página 119

4Linux – www.4linux.com.br

Banco de Dados

6.4.2 Trabalhando com o PostgreSQL Podemos trabalhar com o PostgreSQL através da linha de comando ou através de aplicativos gráficos, que facilitam a administração de bancos de dados. Mas, antes de conhecer as ferramentas gráficas e suas vantagens, vamos ver como podemos trabalhar com o PostgreSQL através do shell. Para trabalhar com o PostgreSQL, você precisa estar logado como o superusuário postgres.

1

su - postgres

Agora você pode abrir o cliente do PostgreSQL:

1

psql

Uma vez dentro do shell do PostgreSQL, podemos começar a interagir com o sistema gerenciador de banco de dados utilizando a linguagem SQL. Antes de trabalharmos em um banco de dados, precisamos selecioná-lo para uso. No PostgreSQL, fazemos isso pela linha de comando passando um parâmetro para o psql:

1

psql nomedobanco

Desenvolvimento Web com PHP

Página 120

4Linux – www.4linux.com.br

Banco de Dados

6.5 SQLite O SQLite é um sistema gerenciador de banco de dados embutido escrito utilizando a linguagem de programação C. O SQLite é distribuído como uma biblioteca que pode ser facilmente embarcada em sua aplicação, sem a necessidade de um processo ou o uso de um sistema gerenciador de banco de dados externo. Ele é 100% livre e de código aberto. O SQLite é muito utilizado para armazenamento rápido e simples de informações, já que ele é muito leve e pode ser embutido em uma aplicação facilmente. Ele é um pouco diferente de outros sistemas de banco de dados, já que ele possui tipagem dinâmica. Uma coluna no SQLite não possui um tipo, já os valores sim. Isso significa que uma mesma coluna pode ter inteiros, doubles e string. O PHP possui uma extensão para se trabalhar com o SQLite. Essa extensão traz dentro de si o próprio SQLite, então podemos dizer que é como se o PHP tivesse um banco de dados embutido, sem precisarmos conectar ou instalar um sistema gerenciador de banco de dados como MySQL ou PostgreSQL.

Desenvolvimento Web com PHP

Página 121

4Linux – www.4linux.com.br

Banco de Dados

6.6 SQL básico Vamos conhecer alguns comandos SQL básicos para montarmos nosso primeiro banco de dados. Embora o padrão SQL seja único, diferentes sistemas gerenciadores de banco de dados implementam o padrão de maneiras diferentes. Portanto, alguns comandos em MySQL são diferentes em PostgreSQL. Vamos mostrar aqui as principais diferenças. Note que a linguagem SQL é muito fácil de compreender. Quando você está fazendo uma declaração ou consulta, é praticamente uma frase que você está escrevendo. Justamente por isso, é fácil se confundir entre informações e comandos. Portanto, quando estiver escrevendo SQL, escreva comandos, cláusulas e expressões sempre com letras maiúsculas, e informações, minúsculas.

6.6.1 Create O comando CREATE permite que nós criemos uma série de elementos comuns em um banco de dados. Com o comando create, podemos criar bancos de dados, tabelas, índices, sequências e muito mais. Vamos conhecer os casos mais comuns de uso do Create. Criar um banco de dados Podemos criar um banco de dados utilizando a seguinte declaração SQL:

1

CREATE DATABASE nomedobanco ;

Observe que declarações SQL sempre devem ser terminadas com um ponto-evírgula. Criar uma tabela

Desenvolvimento Web com PHP

Página 122

4Linux – www.4linux.com.br

Banco de Dados

Podemos criar uma tabela em nosso banco de dados utilizando a seguinte declaração SQL:

1

CREATE TABLE posts (

2

id INTEGER ,

3

titulo VARCHAR (255) ,

4

conteudo TEXT ,

5

PRIMARY KEY ( id )

6

);

Uma tabela é como uma pasta, onde podemos guardar informações separadas por colunas. Vamos criar uma tabela "posts", para guardar as informações dos posts de nosso blog, como o seu título e o conteúdo do post. Observe que, a cada linha, criamos colunas para nossa tabela. Colunas são como seções da pasta que criamos, que podem conter determinados tipos de informações. Esses tipos de informações foram especificados na própria linha, onde dizemos depois do nome da coluna se ela é VARCHAR ou TEXT. Logo veremos mais sobre isso. Observe também a linha PRIMARY KEY. Primary key significa chave primária e, do ponto de vista de bancos de dados relacionais, é a chave que identifica o registro em uma tabela. Cada registro é único e possui um valor. Esse valor é a chave primária. Precisamos de uma coluna para nossas chaves primárias e estamos dizendo que a coluna id será essa coluna. Criar uma sequência Podemos criar uma sequência para uma tabela de nosso banco de dados utilizando a seguinte declaração SQL:

1

CREATE SEQUENCE nome_da_sequencia ;

Desenvolvimento Web com PHP

Página 123

4Linux – www.4linux.com.br

Banco de Dados

Sequências são úteis para colunas que devem ser automaticamente incrementadas ou decrementadas quando um registro for inserido na tabela. Criar um índice Podemos criar um índice em uma tabela de nosso banco de dados utilizando a seguinte declaração SQL:

1

CREATE INDEX nome_do_indice ON tabela ( coluna , outracoluna ) ;

Índices servem para melhorar a performance de nosso banco. Quando fazemos muitas consultas em algumas colunas, é importante que seja criado um índice nessas colunas.

6.6.2 Chaves estrangeiras Além de chaves primárias, nossas tabelas podem ter chaves estrangeiras. Chaves estrangeiras são chaves que estão diretamente relacionadas com outras chaves de outras tabelas no mesmo banco de dados. Por exemplo: um post e um usuário. Um post está diretamente relacionado ao seu autor, isto é, usuário. Portanto, podemos criar uma chave estrangeira e relacionar a tabela de posts com usuários:

1

CREATE TABLE usuarios (

2

usuario_id INT NOT NULL AUTO_INCREMENT ,

3

usuario VARCHAR (255) NOT NULL ,

4

senha VARCHAR (40) NOT NULL ,

5

PRIMARY KEY ( usuario_id ) ,

6

INDEX ( usuario_id )

7

) ENGINE = INNODB ;

8 9 10

CREATE TABLE posts ( post_id INT NOT NULL AUTO_INCREMENT ,

Desenvolvimento Web com PHP

Página 124

4Linux – www.4linux.com.br

Banco de Dados

11

autor INT NOT NULL ,

12

post VARCHAR (140) NOT NULL ,

13

PRIMARY KEY ( post_id ) ,

14

INDEX ( post_id ) ,

15

FOREIGN KEY autor ( autor ) REFERENCES usuarios ( usuario_id )

16

ON UPDATE CASCADE ON DELETE CASCADE

17

) ENGINE = INNODB ;

Observe a linha ON UPDATE CASCADE ON DELETE CASCADE. Esta linha determina o comportamento que será adotado pelo banco de dados caso um registro desta tabela seja alterado ou removido. A opção CASCADE faz com que as relações (de chave estrangeira) sejam automaticamente removidas, sem que haja uma intervenção manual. Sem a opção cascade, não poderíamos remover um post.

6.6.3 Alter

O comando ALTER permite que nós alteremos as características de um banco de dados ou tabela existente. Podemos alterar as colunas de uma tabela utilizando o alter da seguinte forma:

1

ALTER TABLE posts MODIFY titulo TEXT ;

2

ALTER TABLE posts ADD autor VARCHAR (100) ;

3

ALTER TABLE posts DROP conteudo ;

4

ALTER TABLE posts ADD PRIMARY KEY ( id ) ;

Na primeira linha estamos modificando o tipo da coluna titulo para TEXT. Na segunda, adicionamos uma nova coluna chamada autor. Na terceira, removemos a coluna conteudo. E, na última linha, adicionamos uma chave primária em nossa tabela na coluna id.

Desenvolvimento Web com PHP

Página 125

4Linux – www.4linux.com.br

Banco de Dados

6.6.4 Drop

O comando DROP permite que nós deletemos bancos de dados e tabelas. Ele é muito similar ao create, mas possui menos parâmetros.

1

DROP TABLE posts ;

2

DROP TABLE posts , usuarios , comentarios ;

3

DROP DATABASE banco ;

6.6.5 Truncate

O comando TRUNCATE permite que nós esvaziemos uma tabela em nosso banco de dados. Isso irá remover todos os registros de uma tabela.

1

TRUNCATE TABLE posts ;

6.6.6 Insert

O comando INSERT permite a inserção de registros em uma tabela. É com ele que nós podemos começar a aprender mais sobre manipulação de dados em um banco de dados relacional. Para inserir informações em uma tabela, podemos:

1

INSERT INTO posts ( titulo , conteudo ) VALUES ( ’ Meu primeiro post ’ , ’ Este post é muito legal , tri legal ! ’) ;

2

INSERT INTO posts ( titulo , conteudo ) VALUES ( ’ O Gr ê mio ganhou ! ’ , ’O tricolor ataca de novo ! ’) ;

Desenvolvimento Web com PHP

Página 126

4Linux – www.4linux.com.br

Banco de Dados

Observe que estamos especificando não só os valores que queremos inserir, mas onde queremos inseri-los. Especificamos que vamos inserir dados nas colunas titulo e conteudo, e logo depois com a cláusula VALUES, especificamos que valores irão nestas colunas respectivamente.

6.6.7 Update Podemos utilizar o comando UPDATE para atualizar registros em uma tabela. Para atualizar registros, podemos:

1

UPDATE posts SET titulo = ’ Novo post ’ WHERE titulo = ’ Meu primeiro post ’;

2

UPDATE posts SET titulo = ’ Novo post ’ , conteudo = ’ Novo conteudo ’ WHERE id =1;

Usamos a cláusula SET para especificar quais colunas receberão novos valores. Podemos especificar mais de uma coluna separando-as por vírgulas. Observe que temos uma cláusula WHERE junto de nosso comando UPDATE. A cláusula WHERE espera uma condição e serve como filtro. Caso os registros de nossa tabela batam com a condição especificada no WHERE, eles serão repassados para o comando que utilizamos, neste caso o UPDATE. É comum utilizarmos a chave primária de um registro para fazer condições onde queremos encontrar um registro específico, mas podemos fazer condições com qualquer coluna da tabela. E não só condições de igualdade: • Igual: = • Diferente: != ou • Menor que: <

Desenvolvimento Web com PHP

Página 127

4Linux – www.4linux.com.br

Banco de Dados

• Maior que: >

• Menor ou igual: =

Além disso, podemos ter múltiplas condições:

1

UPDATE posts SET titulo = ’ Novo post ’ WHERE categoria = 1 AND tag = ’ futebol ’;

Se executarmos o comando UPDATE sem WHERE, iremos alterar todos os registros da tabela. E tenho certeza que não é isso que queremos, não é?

6.6.8 Delete

Podemos remover dados de nossas tabelas utilizando o comando DELETE. Assim como o UPDATE, o DELETE também pode ou não ter uma cláusula WHERE, vejam:

1

DELETE FROM posts ;

2

DELETE FROM posts WHERE id = 1;

Na primeira linha, vamos remover todos os registros da tabela posts. Na segunda, vamos remover apenas o registro com id igual a 1.

Desenvolvimento Web com PHP

Página 128

4Linux – www.4linux.com.br

Banco de Dados

6.6.9 Select Com certeza o comando SELECT é o comando mais interessante de se trabalhar quando falamos de bancos de dados. É ele que permite que nós façamos consultas em nosso banco. O comando SELECT é muito versátil e permite que façamos consultas simples ou extremamente complexas, dependendo de como as informações estão organizadas em nosso banco de dados. Para fazer uma simples consulta, fazemos:

1

SELECT * FROM posts ;

2

SELECT titulo FROM posts ;

3

SELECT titulo , conteudo FROM posts ;

O primeiro parâmetro que o comando SELECT espera são as colunas que queremos ver. O segundo parâmetro é a tabela que queremos consultar. Quando não quisermos ver colunas específicas, mas sim, todas as colunas de uma tabela, podemos utilizar o asterisco. Também podemos filtrar e manipular nossa consulta de várias maneiras. O primeiro exemplo é utilizar o comando SELECT junto com a cláusula WHERE:

1

SELECT * FROM posts WHERE categoria = 2;

2

SELECT titulo , conteudo FROM posts WHERE categoria 2 AND tag = ’ futebol ’;

Organizando resultados Para organizar os resultados de nossa consulta por uma coluna, podemos:

1

SELECT * FROM posts ORDER BY id ;

2

SELECT * FROM posts ORDER BY titulo DESC ;

Desenvolvimento Web com PHP

Página 129

4Linux – www.4linux.com.br

Banco de Dados

Por padrão, será utilizada a ordem ascendente. Mas podemos, como na segunda linha do exemplo acima, organizar de forma descendente. Se organizarmos de forma descendente uma coluna que possui letras, não números, a ordem será Z-A não AZ. Limitando resultados Podemos também limitar o número de resultados de nossa consulta:

1

SELECT * FROM posts LIMIT 0 ,10;

2

SELECT * FROM posts LIMIT 30 ,100;

O primeiro número é o início e o segundo, o fim. É como se disséssemos para nosso banco de dados: faça a consulta e me traga os resultados de 30 a 100. Buscando informações Podemos buscar informações nos registros de nossas tabelas utilizando o comando SELECT em conjunto com a cláusula WHERE e o operador LIKE. O LIKE permite que nós filtremos os resultados de nossa consulta com base no conteúdo de uma coluna:

1

SELECT * FROM posts WHERE titulo LIKE ’ Meu carro ’;

2

SELECT * FROM posts WHERE titulo LIKE ’% futebol % ’;

A primeira linha irá trazer todos os registros da tabela post que possuam exatamente a frase "Meu carro"na coluna titulo. Já a segunda linha irá trazer todos os registros que possuam em qualquer parte da coluna titulo a palavra "futebol". Usamos o % para indicar um curinga, que pode representar qualquer letra, número ou palavra em nossa string.

Desenvolvimento Web com PHP

Página 130

4Linux – www.4linux.com.br

Banco de Dados

6.6.10 Join O comando join permite que, em uma consulta SQL, nós juntemos duas tabelas a partir de uma condição. Vamos supor que nós estamos querendo saber todos os posts que possuem uma categoria. Vamos executar a seguinte consulta:

1

SELECT * FROM posts , categorias WHERE posts . categoria = categorias . nome ;

Esta consulta irá retornar apenas os posts que possuem categorias, deixando de lado os posts que não possuem.

6.6.11 Left join O comando left join é um pouco diferente do join normal. Ao invés de combinar os resultados, o left join irá preservar os resultados da tabela que está à esquerda do comando.

1

SELECT * FROM posts LEFT JOIN categorias ON posts . categoria = categorias . nome ;

Esta consulta irá retornar todos os posts, mesmo que eles não possuam uma categoria.

6.6.12 Right join O comando right join é muito similar ao left join, contudo, ele preservará os resultados da tabela que está à direita do comando.

Desenvolvimento Web com PHP

Página 131

4Linux – www.4linux.com.br

1

Banco de Dados

SELECT * FROM posts RIGHT JOIN categorias ON posts . categoria = categorias . nome ;

6.6.13 Inner join O comando inner join é um pouco diferente dos joins que já vimos. Ele permite que seja feita a união de tabelas através das suas relações com chaves estrangeiras, também conhecidas como foreign keys. Vamos supor que nós temos duas tabelas, uma de usuários e uma de seguidores. Algo como um mini-twitter. Nossa tabela de seguidores possui apenas duas colunas: o usuário (usuario_id) e quem ele segue (id_seguindo). Essas duas colunas fazem referência à chave primária da tabela de usuários (id_usuario). Precisamos de uma consulta que traga as informações dos usuários que estão seguindo o usuário 1. Para isso:

1

SELECT * FROM usuarios INNER JOIN seguidores ON ( seguidores . id_seguindo = usuarios . usuario_id ) WHERE seguidores . id_usuario = 1

Desenvolvimento Web com PHP

Página 132

4Linux – www.4linux.com.br

Banco de Dados

6.7 Tipos de dados As colunas de uma tabela em um banco de dados podem ter diferentes tipos. É importantíssimo que durante a modelagem de nosso banco, façamos a escolha correta de tipos de dados, garantindo boa performance e alocação correta de memória. Tipos de dados CHAR(X): Uma string fixa com 0 a 255 caracteres. VARCHAR(X): Uma string variável com 0 a 255 caracteres. TINYTEXT: Uma string com tamanho máximo de 255 caracteres TEXT: Uma string de texto com tamanho máximo de 65535 caracteres BLOB: Uma string binária com tamanho máximo de 65535 caracteres MEDIUMTEXT: Uma string de texto com tamanho máximo de 16777215 caracteres MEDIUMBLOB: Uma string binária com tamanho máximo de 16777215 caracteres LONGTEXT: Uma string de texto com tamanho máximo de 4294967295 caracteres LONGBLOB: Uma string binária com tamanho máximo de 4294967295 caracteres

Desenvolvimento Web com PHP

Página 133

4Linux – www.4linux.com.br

Banco de Dados

Tipos de números TINYINT(X): Número inteiro de -128 a 127. 0 a 255 caso seja UNSIGNED. SMALLINT(X): Número inteiro de -32768 a 32767. 0 a 65535 caso seja UNSIGNED. MEDIUMINT(X): -8388608 a 8388607. 0 a 16777215 caso seja UNSIGNED. INT(X): -2147483648 a 2147483647. 0 a 4294967295 caso seja UNSIGNED. BIGINT(X): -9223372036854775808 a 9223372036854775807. 0 a 18446744073709551615 caso seja UNSIGNED. FLOAT: Um número decimal pequeno. DOUBLE: Um número decimal grande. Observe que X é onde você define o tamanho do dado. UNSIGNED significa que o número inteiro só pode ser positivo.

Desenvolvimento Web com PHP

Página 134

4Linux – www.4linux.com.br

Banco de Dados

Tipos de datas DATE: Guarda um valor de data no formato YYYY-MM-DD, 3 bytes DATETIME: Guarda um valor de data e horário no formato YYYY-MM-DD HH:MM:SS, 8 bytes TIMESTAMP: Guarda um valor de data no formato YYYYMMDDHHMMSS, 4 bytes TIME: Guarda um valor de horário no formato HH:MM:SS, 3 bytes Outros tipos ENUM (’a’, ’b’, ’c’): Significa enumeração e permite que você especifique uma lista de valores possíveis para a coluna. De 1 a 65535. SET (’a’, ’b’, ’c’): Similar ao ENUM, exceto que múltiplos valores podem ser escolhidos. De 1 a 64.

Desenvolvimento Web com PHP

Página 135

4Linux – www.4linux.com.br

Banco de Dados

6.8 Sequences e Auto Increment Quando criamos nossa tabela, criamos uma coluna do tipo INT, não nula. Depois, definimos essa coluna como sendo a chave primária de nossa tabela. Chaves primárias precisam ser únicas, portanto, não é interessante deixarmos o preenchimento dessa coluna a cargo do software ou do usuário. O banco é que deveria controlar essa chave. Lembram das sequences que falamos anteriormente? Elas permitem que incrementemos ou decrementemos o valor de uma coluna quando um registro for inserido na tabela desta coluna. E isso é exatamente o que queremos fazer quando estamos trabalhando com bancos de dados relacionais e chaves primárias. No PostgreSQL, criamos uma tabela e uma sequência para que a chave primária seja incrementada toda vez que um registro for adicionado na tabela. Fazemos isso da seguinte forma:

1

CREATE SEQUENCE posts_id_seq ;

2 3

CREATE TABLE posts (

4

id INTEGER DEFAULT NEXTVAL ( ’ posts_id_seq ’) ,

5

titulo VARCHAR (255) ,

6

conteudo TEXT ,

7

PRIMARY KEY ( id )

8

);

Já no MySQL, não temos o conceito de sequences. Para incrementarmos uma chave primária automaticamente vamos utilizar o comando AUTO_INCREMENT. Quando o AUTO_INCREMENT é associado a uma coluna, toda vez que inserirmos um novo registro, ela será incrementada. Veja:

1 2

CREATE TABLE posts ( id INTEGER AUTO_INCREMENT ,

Desenvolvimento Web com PHP

Página 136

4Linux – www.4linux.com.br

3

titulo VARCHAR (255) ,

4

conteudo TEXT ,

5

PRIMARY KEY ( id )

6

Banco de Dados

);

Desenvolvimento Web com PHP

Página 137

4Linux – www.4linux.com.br

Banco de Dados

6.9 Funções do MySQL Para fazer nossa aplicação em PHP conversar com um banco de dados MySQL, nós precisamos utilizar um conjunto de funções disponíveis na extensão MySQL do PHP. Com essas funções, podemos conectar com um banco de dados, executar comandos e fazer consultas. Para podermos fazer uso dessas funções, precisamos instalar a extensão MySQL em nosso PHP, o que pode ser feito com uma simples instalação de pacote:

1

apt - get install php5 - mysql

6.9.1 Conexão

Antes de começarmos a interagir com o banco de dados, precisamos nos conectar com ele. Vamos utilizar a função mysql_connect() para conectar no MySQL. Como estamos em um ambiente de desenvolvimento, o Apache, o PHP e o MySQL estão rodando na mesma máquina. Então, basta conectarmos com o endereço de loopback, 127.0.0.1 ou localhost, ao invés de um servidor externo.

1

mysql_connect ( " localhost " , " root " , " 123456 " ) ;

2

mysql_select_db ( " nomedobanco " ) ;

A função mysql_connect() espera três parâmetros: o hostname do servidor onde está o MySQL, o usuário do MySQL e sua senha. Além de conectarmos, observe que na segunda linha estamos utilizando a função mysql_select_db(). Essa função seleciona um banco de dados no MySQL para trabalharmos. Ela age como o USE que vimos anteriormente.

Desenvolvimento Web com PHP

Página 138

4Linux – www.4linux.com.br

Banco de Dados

6.9.2 Inserindo registros A fim de interagirmos com nosso banco de dados, precisamos de uma função que nos permita executar declarações e consultas SQL. Essa função é a mysql_query(). Com esta função, podemos executar INSERTs, UPDATEs e outros comandos SQL. Para inserirmos um registro, sabemos que precisamos utilizar o comando INSERT. Mas vamos ver como isso funciona no PHP:

1

mysql_connect ( " localhost " , " root " , " 123456 " ) ;

2

mysql_select_db ( " blog " ) ;

3 4

$titulo = " Meu primeiro post " ;

5

$conteudo = " Meu post tri legal no meu blog ! "

6 7

mysql_query ( " INSERT INTO posts ( titulo , conteudo ) VALUES (’ $titulo ’ , ’ $conteudo ’) " ) ;

Observe que, além de executar um INSERT, estamos manipulando a string passada para a função mysql_query(), criando uma query dinâmica com as valores das variáveis que criamos logo acima. Note também que não precisamos terminar nossa declaração com ponto-e-vírgula.

6.9.3 Atualizando registros Para atualizarmos um registro, sabemos que precisamos utilizar o comando UPDATE, portanto:

1

mysql_connect ( " localhost " , " root " , " 123456 " ) ;

2

mysql_select_db ( " blog " ) ;

Desenvolvimento Web com PHP

Página 139

4Linux – www.4linux.com.br

Banco de Dados

3 4

$id = 1;

5

$titulo = " Meu novo post " ;

6 7

mysql_query ( " UPDATE posts SET titulo = ’ $titulo ’ WHERE id = $id " ) ;

6.9.4 Deletando registros

Para removermos um registro, sabemos que precisamos utilizar o comando DELETE, portanto:

1

mysql_connect ( " localhost " , " root " , " 123456 " ) ;

2

mysql_select_db ( " blog " ) ;

3 4

$id = 5;

5 6

mysql_query ( " DELETE FROM posts WHERE id = $id " ) ;

6.9.5 Apresentando registros

Para fazer uma consulta em uma tabela, sabemos que precisamos utilizar o comando SELECT, portanto:

1

mysql_connect ( " localhost " , " root " , " 123456 " ) ;

2

mysql_select_db ( " blog " ) ;

3 4

mysql_query ( " SELECT * FROM posts " ) ;

Desenvolvimento Web com PHP

Página 140

4Linux – www.4linux.com.br

Banco de Dados

Mas e agora? Fizemos a consulta, mas como podemos ver os resultados dela? A função mysql_fetch_array() permite que nós vejamos os resultados de uma consulta SQL como se fosse um array, onde as colunas são as chaves de nosso array e os valores das colunas, valores do array.

1

mysql_connect ( " localhost " , " root " , " 123456 " ) ;

2

mysql_select_db ( " blog " ) ;

3 4

$query = mysql_query ( " SELECT * FROM posts " ) ;

5 6

while ( $item = mysql_fetch_array ( $query ) ) { echo $item [ ’ titulo ’];

7 8

}

Observe que colocamos a função mysql_fetch_array() em um while. Fazemos isto porque nossa consulta trouxe mais de um resultado, portanto, estamos trabalhando com mais de um registro. O while se encarrega de executar o bloco de código contido nele enquanto houverem registros a serem exibidos da nossa consulta. O bloco de código dentro do while simplesmente traz o valor contido na coluna titulo no registro atual. Listaremos, assim, todos os registros da tabela. Note também que associamos uma variável ao retorno da função mysql_query() e passamos essa variável como parâmetro para a mysql_fetch_array(), que precisa saber com qual consulta ela vai trabalhar.

Desenvolvimento Web com PHP

Página 141

4Linux – www.4linux.com.br

Banco de Dados

6.10 Funções do PostgreSQL Para fazer nossa aplicação em PHP conversar com um banco de dados PostgreSQL, nós precisamos utilizar um conjunto de funções disponíveis na extensão PostgreSQL do PHP. Com essas funções, podemos conectar com um banco de dados, executar comandos e fazer consultas. Para podermos fazer uso dessas funções, precisamos instalar a extensão PostgreSQL em nosso PHP, o que pode ser feito com uma simples instalação de pacote:

1

apt - get install php5 - pgsql

6.10.1 Conexão

Antes de começarmos a interagir com o banco de dados, precisamos nos conectar com ele. Vamos utilizar a função pg_connect() para conectar no PostgreSQL. Como estamos em um ambiente de desenvolvimento, o Apache, o PHP e o PostgreSQL estão rodando na mesma máquina. Então, basta conectarmos com o endereço de loopback, 127.0.0.1 ou localhost, ao invés de um servidor externo.

1

pg_connect ( " host = localhost port =5432 dbname = blog user = root password =123456 " ) ;

A função pg_connect() espera apenas um parâmetro, mas este parâmetro pode possuir sub-parâmetros separados por espaço. Observe que na verdade estamos passando cinco parâmetros: o hostname do servidor que vamos conectar, a porta do servidor, o nome do banco, o usuário e sua senha.

Desenvolvimento Web com PHP

Página 142

4Linux – www.4linux.com.br

Banco de Dados

6.10.2 Inserindo registros A fim de interagirmos com nosso banco de dados, precisamos de uma função que nos permita executar declarações e consultas SQL. Essa função é a pg_query(). Com esta função, podemos executar INSERTs, UPDATEs e outros comandos SQL. Para inserirmos um registro, sabemos que precisamos utilizar o comando INSERT. Mas vamos ver como isso funciona no PHP:

1

pg_connect ( " host = localhost port =5432 dbname = blog user = root password =123456 " ) ;

2 3

$titulo = " Meu primeiro post " ;

4

$conteudo = " Meu post tri legal no meu blog ! "

5 6

pg_query ( " INSERT INTO posts ( titulo , conteudo ) VALUES ( ’ $titulo ’ , ’ $conteudo ’) " ) ;

Observe que, além de executar um INSERT, estamos manipulando a string passada para a função pg_query(), criando uma query dinâmica com as valores das variáveis que criamos logo acima. Note também que não precisamos terminar nossa declaração com ponto-e-vírgula.

6.10.3 Atualizando registros Para atualizarmos um registro, sabemos que precisamos utilizar o comando UPDATE, portanto:

1

pg_connect ( " host = localhost port =5432 dbname = blog user = root password =123456 " ) ;

Desenvolvimento Web com PHP

Página 143

4Linux – www.4linux.com.br

Banco de Dados

2 3

$id = 1;

4

$titulo = " Meu novo post " ;

5 6

pg_query ( " UPDATE posts SET titulo = ’ $titulo ’ WHERE id = $id " ) ;

6.10.4 Deletando registros

Para removermos um registro, sabemos que precisamos utilizar o comando DELETE, portanto:

1

pg_connect ( " host = localhost port =5432 dbname = blog user = root password =123456 " ) ;

2 3

$id = 5;

4 5

pg_query ( " DELETE FROM posts WHERE id = $id " ) ;

6.10.5 Apresentando registros

Para fazer uma consulta em uma tabela, sabemos que precisamos utilizar o comando SELECT, portanto:

1

pg_connect ( " host = localhost port =5432 dbname = blog user = root password =123456 " ) ;

2 3

pg_query ( " SELECT * FROM posts " ) ;

Desenvolvimento Web com PHP

Página 144

4Linux – www.4linux.com.br

Banco de Dados

Mas e agora? Fizemos a consulta, mas como podemos ver os resultados dela? A função pg_fetch_all() permite que nós vejamos os resultados de uma consulta SQL como se fosse um array, onde as colunas são as chaves de nosso array e os valores das colunas, valores do array.

1

pg_connect ( " host = localhost port =5432 dbname = blog user = root password =123456 " ) ;

2 3

$query = pg_query ( " SELECT * FROM posts " ) ;

4 5

$itens = pg_fetch_all ( $query ) ;

6 7

foreach ( $itens as $item ) { echo $item [ ’ titulo ’];

8 9

}

A função pg_fetch_all() retorna um array multidimensional todos todos os registros trazidos pela nossa consulta. Sendo assim, podemos usar um simples foreach para iterar entre os resultados e mostrar as informações que queremos, no caso, o valor da coluna titulo. Note também que associamos uma variável ao retorno da função pg_query() e passamos essa variável como parâmetro para a pg_fetch_all(), que precisa saber com qual consulta ela vai trabalhar.

Desenvolvimento Web com PHP

Página 145

4Linux – www.4linux.com.br

Banco de Dados

6.11 Funções do SQLite Para fazer nossa aplicação em PHP conversar com um banco de dados SQLite, nós precisamos utilizar um conjunto de funções disponíveis na extensão SQLite do PHP. Com essas funções, podemos abrir um banco de dados, executar comandos e fazer consultas. Para podermos fazer uso dessas funções, precisamos instalar a extensão SQLite em nosso PHP, o que pode ser feito com uma simples instalação de pacote:

1

apt - get install php5 - sqlite

6.11.1 Conexão Antes de começarmos a interagir com o banco de dados, precisamos nos conectar com ele. Contudo, o SQLite funciona de maneira um tanto diferente se comparado com o MySQL e o PostgreSQL. Quando você instalou a extensão do SQLite, você embutiu o SQLite no PHP. Isso significa que não é necessária uma abertura de conexão ou qualquer coisa, basta abrir um arquivo. Isso mesmo, o SQLite guarda as informações em um arquivo. Este arquivo, criado pelo SQLite, é o seu banco de dados. Ele pode estar na pasta da sua aplicação ou em qualquer outro parte do sistema. Para usarmos o banco, mas abrir o arquivo. Caso o arquivo não exista, isto é, o banco não exista, ele será criado automaticamente.

1

$banco = sqlite_open ( ’ meubanco ’) ;

Observe que estamos associando o retorno da função sqlite_open() a uma variável. Isto é necessário porque outras funções de interação com o banco SQLite precisam

Desenvolvimento Web com PHP

Página 146

4Linux – www.4linux.com.br

Banco de Dados

saber com qualquer banco elas precisam interagir.

6.11.2 Inserindo registros A fim de interagirmos com nosso banco de dados, precisamos de uma função que nos permita executar declarações e consultas SQL. Essa função é a sqlite_query(). Com esta função, podemos executar INSERTs, UPDATEs e outros comandos SQL. Para inserirmos um registro, sabemos que precisamos utilizar o comando INSERT. Mas vamos ver como isso funciona no PHP:

1

$banco = sqlite_open ( ’ meubanco ’) ;

2 3

$titulo = " Meu primeiro post " ;

4

$conteudo = " Meu post tri legal no meu blog ! "

5 6

sqlite_query ( $banco , " INSERT INTO posts ( titulo , conteudo ) VALUES (’ $titulo ’ , ’ $conteudo ’) " ) ;

Observe que, além de executar um INSERT, estamos manipulando a string passada para a função sqlite_query(), criando uma query dinâmica com as valores das variáveis que criamos logo acima. Note também que não precisamos terminar nossa declaração com ponto-e-vírgula.

6.11.3 Atualizando registros Para atualizarmos um registro, sabemos que precisamos utilizar o comando UPDATE, portanto:

Desenvolvimento Web com PHP

Página 147

4Linux – www.4linux.com.br

1

Banco de Dados

$banco = sqlite_open ( ’ meubanco ’) ;

2 3

$id = 1;

4

$titulo = " Meu novo post " ;

5 6

sqlite_query ( $banco , " UPDATE posts SET titulo = ’ $titulo ’ WHERE id = $id " ) ;

6.11.4 Deletando registros

Para removermos um registro, sabemos que precisamos utilizar o comando DELETE, portanto:

1

$banco = sqlite_open ( ’ meubanco ’) ;

2 3

$id = 5;

4 5

sqlite_query ( $banco , " DELETE FROM posts WHERE id = $id " ) ;

6.11.5 Apresentando registros

Para fazer uma consulta em uma tabela, sabemos que precisamos utilizar o comando SELECT, portanto:

1

$banco = sqlite_open ( ’ meubanco ’) ;

2 3

sqlite_query ( $banco , " SELECT * FROM posts " ) ;

Desenvolvimento Web com PHP

Página 148

4Linux – www.4linux.com.br

Banco de Dados

Mas e agora? Fizemos a consulta, mas como podemos ver os resultados dela? A função sqlite_fetch_all() permite que nós vejamos os resultados de uma consulta SQL como se fosse um array, onde as colunas são as chaves de nosso array e os valores das colunas, valores do array.

1

$banco = sqlite_open ( ’ meubanco ’) ;

2 3

$query = sqlite_query ( $banco , " SELECT * FROM posts " ) ;

4 5

$itens = sqlite_fetch_all ( $query ) ;

6 7

foreach ( $itens as $item ) { echo $item [ ’ titulo ’];

8 9

}

A função sqlite_fetch_all() retorna um array multidimensional todos todos os registros trazidos pela nossa consulta. Sendo assim, podemos usar um simples foreach para iterar entre os resultados e mostrar as informações que queremos, no caso, o valor da coluna titulo. Note também que associamos uma variável ao retorno da função sqlite_query() e passamos essa variável como parâmetro para a sqlite_fetch_all(), que precisa saber com qual consulta ela vai trabalhar.

Desenvolvimento Web com PHP

Página 149

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF