PHP e Banco de Dados progweb2@thiagomiranda.net
Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net
PHP e Banco de Dados É praticamente impossível atualmente criar sistemas de qualquer porte que não interajam com formas de armazenar e recuperar informações para acessos futuros. E banco de dados é uma forma simples e organizada de armazenar itens de dados relacionados PHP oferece suporte a Banco de Dados Relacionais mais populares disponíveis na atualidade. A grande maioria é compatível com o padrão SQL. PHP oferece um conjunto separado de funções para cada produto de banco de dados ou SGBD (MySQL, PostgreSQL, Oracle, Sybase, SQLServer, são alguns exemplos).
Bancos de Dados As informações são organizadas logicamente em tabelas Cada banco de dados contém uma ou mais tabelas de informação cada tabela possui um ou mais campos, ou colunas, e podem armazenar qualquer número de linhas ou registros Sistemas de bancos de dados sofisticados permitem relacionar estes registros. Por exemplo, relacionando os dados de compra realizadas por um cliente. Esses sistemas são conhecidos como Sistemas de Banco de Dados Relacionais Cada campo, ou coluna, de uma tabela possui um tipo de dado associado. Semelhante ao tipo de dado de uma variável do PHP. Sendo os maiores grupos os tipos texto, data, numérico Além do tipo de dados, campos de tabela podem ser chave primária. Forçando assim que o valor do campo seja único para cada registro SQL é a linguagem padrão para consulta e manipulação dos dados de um banco de dados relacional.
MySQL Utilizaremos o MySQL como banco de dados MySQL + PHP -Combinam perfeitamente - Facilidade de instalação e uso, - Documentação de qualidade - Performance otimizada -Não exige grande capacidade de hardware - Gratuito - Compatível com diversos sistemas operacionais - Uso crescente pelas empresas.
Tabelas Os dados em MySQL são armazenadas em objetos de banco de dados chamado tabelas que são uma coleção de entradas de dados relacionados e que consiste de colunas e linhas. Cada tabela é identificada por um nome (por exemplo, "clientes" ou "ordens"). As tabelas contêm registros (linhas) com dados. Abaixo está um exemplo de uma tabela chamada "Pessoas":
Tabelas A tabela anterior contém três linhas (um para cada pessoa) e quatro colunas (Sobrenome, Nome, Endereço e Cidade). Consultas A consulta é uma pergunta ou um pedido. Com o MySQL, que pode consultar um banco de dados para obter informações específicas e ter um conjunto de registros retornado. Olhe para a seguinte consulta: SELECT Sobrenome FROM Pessoas
Principais comandos SQL no Mysql SELECT: consultar dados de um banco de dados UPDATE: atualizar dados de um banco de dados DELETE: excluir dados existentes em um banco de dados INSERT INTO: inserir novos dados em um banco de dados CREATE DATABASE: criar um banco de dados ALTER DATABASE: alterar um banco de dados CREATE TABLE: criar uma tabela em um banco de dados ALTER TABLE: alterar uma tabela de um banco de dados DROP TABLE: excluir uma tabela de um banco de dados
Conectando ao Banco de Dados Criar uma conexão com um banco de dados MySQL Antes que você possa acessar dados em um banco de dados, você deve criar uma conexão com o banco de dados. No PHP, isso é feito com a função mysql_connect(). $conexao = mysql_connect("localhost", "root", senha"); Esta função utiliza os seguintes parâmetros: localhost nome ou endereço IP do servidor onde está armazenado o banco de dados; root nome do usuário que tem acesso ao banco de dados senha sua senha de acesso ao banco de dados.
Criando um Banco de Dados Para criarmos, em PHP, um banco de dados de nome biblioteca, por exemplo, faríamos como se segue: $sql = "CREATE DATABASE IF NOT EXISTS biblioteca"; $resultado = mysql_query($sql) or die(mysql_error());
Selecionando um Banco de Dados Após feita a conexão, o PHP exige que você especifique qual o banco de dados que estará em uso; Exemplo: o comando abaixo abre o banco de dados biblioteca e o deixa pronto para uso: mysql_select_db( "biblioteca");
Criando uma tabela A instrução CREATE TABLE é usado para criar uma tabela no MySQL. Sintaxe CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type,... ) Devemos acrescentar a declaração CREATE TABLE para a função mysql_query() para executar o comando.
Criando uma tabela A instrução CREATE TABLE é usado para criar uma tabela no MySQL. Sintaxe CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type,... ) Devemos acrescentar a declaração CREATE TABLE para a função mysql_query() para executar o comando.
Tipos de dados aceitos no Mysql M - Indica o tamanho máximo. Valor máximo - 255 D - Utilizado para ponto flutuante, indicando o número de casas decimais. Valor máximo - 30 TINYINT[M]: Números Inteiros muitos pequenos. Pode assumir intervalo de valores entre - 128 a 127 SMALLINT[M]: Números inteiros pequenos. Valores entre - 32769 a 32767 MEDIUMINT[M]: Números inteiros de tamanho médio. Entre -8388608 a 8388607 INT[M]: Inteiros de tamanho normal. Entre -2147483648 a 2147483647 BIGINT[M]: Inteiros de tamanho grande. Entre -9223372036854775808 9223372036854775807 FLOAT[M,D]: Números em ponto flutuante pequenos (simples precisão). O valor de M corresponde ao tamanho e D ao número de casas decimais DOUBLE[M,D]: Números ponto flutuante de tamanho normal.
Tipos de dados aceitos no Mysql DATE: Armazena valores de data. Os dados são gravados no formato YYYY-MM-DD DATETIME: Combinação entre data e hora. Formato: YYYY-MM-DD HH:MM:SS TIME: Para armazenar valores de hora. Valores entre -838:59:59 a 838:59:59 CHAR(M): Valores de String. VARCHAR(M): Armazena uma cadeia de caracteres. De 0 a 255 Caracteres TEXT: Um texto máximo de 65535 caracteres MEDIUMTEXT: Um Texto de tamanho Médio LONGTEXT: Texto de tamanho grande. No máximo 4.294.967.295 BLOB: Arquivos binários
Criando uma tabela Para criarmos uma tabela de nome cadastro, com os campos abaixo, faríamos: A)codigo campo de texto com tamanho de 5 caracteres; B)nome campo de texto com tamanho de 50 caracteres; C)idade campo numérico inteiro; D)Altura campo numérico float; $sql = "CREATE TABLE IF NOT EXISTS cadastro(codigo int NOT NULL PRIMARY KEY AUTO_INCREMENT, nome varchar(50) NOT NULL, idade tinyint NOT NULL, altura float NOT NULL)"; $resultado = mysql_query($conexao, $sql) or die(mysql_error($conexao)); Observações: a)not NULL indica que aquele campo deverá ter algum valor e não poderá ser nulo ao ser salvo na tabela; b)note que vazio não é a mesma coisa que nulo vazio tem endereço na memória e nulo não tem; c)primary KEY indica que aquele campo é chave primária da tabela; d)auto_increment cria índices que aumentam de 1 em 1, automaticamente, começando por 1.
Criando uma tabela Importante: Um banco de dados deve ser selecionado antes de uma tabela pode ser criada. O banco de dados é selecionada com a função mysql_select_db (). Nota: Quando você cria um campo de banco de dados do tipo varchar, você deve especificar o comprimento máximo do campo, por exemplo, varchar(15). O tipo de dados especifica o tipo de dados a coluna pode conter como foi falado anteriormente.
Fechando uma conexão Mysql Ao usarmos bancos de dados que se baseiam na linguagem de manipulação SQL, é imprescindível que, após o término das operações, o banco seja fechado; Para isto, basta, em PHP, encerrarmos a conexão; Isso é feito através da função: mysql_close($conexao);
Comandos SQL no PHP Depois de criada uma conexão e selecionada a base, podemos utilizar todos os comandos da linguagem SQL para manipularmos nosso banco de dados; Todo acesso ao banco de dados é feito pela função mysql_query( consulta );
Inserindo dados Inserir dados em uma tabela do banco A instrução INSERT INTO é utilizado para adicionar novos registros a uma tabela de banco de dados. Sintaxe É possível escrever a instrução INSERT INTO em duas formas. A primeira forma não especifica o nome da coluna onde os dados serão inseridos, apenas os seus valores: INSERT INTO tabela VALUES (valor1, valor2, valor3,...) A segunda forma especifica tanto os nomes das colunas e os valores a serem inseridos: INSERT INTO tabela (coluna1, coluna2, column3,...) VALUES (valor1, valor2, valor3,...)
Vamos testar Crie um formulário que envia os dados para uma página PHP que fará a inserção dos itens na tabela cadastro que criamos a pouco.
Recupera o último ID Inserido mysql_insert_id();
Selecionar Dados Selecionar dados de uma tabela de banco de dados A declaração SELECT é usado para selecionar dados de um banco de dados. Sintaxe SELECT nomes_das_colunas FROM nome_tabela Para executar a instrução acima, devemos usar o a função mysql_query().
Selecionar Dados Exemplo O exemplo a seguir seleciona todos os dados armazenados na "tabela Pessoas" (O símbolo * seleciona todos os dados na tabela): <?php $con = mysql_connect("localhost", root", "); if (!$con) { Die(mysql_error()); } mysql_select_db( biblioteca", $con); $result = mysql_query("select * FROM cadastro"); while($row = mysql_fetch_array($result)) { echo $row[ nome']. " ". $row[ idade']; echo "<br />"; } mysql_close($con);?>
Selecionar Dados O exemplo anterior armazena os dados retornados pela função mysql_query() na variável $result. Em seguida, usamos a função mysql_fetch_array() para retornar a primeira linha do conjunto de registros como uma matriz. Cada chamada para mysql_fetch_array() retorna a próxima linha no conjunto de registros. O while passa através de todos os registros no conjunto de registros. Para imprimir o valor de cada linha, usamos a variável $row ($row[ nome ] e $row[ idade ])
Principais funções
Cláusula Where A Cláusula WHERE é usada para filtrar registros. WHERE WHERE é usado para extrair somente aqueles registros que preenchem um critério especificado. Sintaxe SELECT column_name(s) FROM table_name WHERE column_name operator value
Cláusula Where Exemplo select * from cadastro where idade > 18; -A clausula assim somente retorna cadastros de pessoas em que o campo idade é maior que 18.
Operadores da Cláusula Where = : Igual <> : Diferente > : Maior Que < : Menor que >= : Maior ou Igual <= : Menor ou Igual
Operadores da Cláusula Where BETWEEN : Entre determinados valores SELECT * FROM Pessoa WHERE idade BETWEEN 20 AND 30 LIKE : Busca por um padrão SELECT * FROM Pessoa WHERE nome LIKE '%ter ' IN : Específica multiplas possibilidades de valor SELECT * FROM Pessoa WHERE idade in (30,31,32,33,34)
Order by A palavra-chave ORDER BY é usado para ordenar os dados em um conjunto de dados. ORDER BY ordena os registros de forma ascendente por padrão. Se você quiser ordenar os registros em ordem descendente, nós podemos usar a palavra-chave DESC. Sintaxe SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC DESC
Order by Exemplo: SELECT * FROM cadastro ORDER BY idade DESC Ordena os itens cadastrados pela coluna idade de forma decrescente.
Order by Ordenando por duas Colunas Também é possível ordenar por mais que uma coluna. Quando ordenamos por mais de uma coluna, a segunda coluna é usada somente se os valores da primeira coluna são iguais: SELECT column_name(s) FROM table_name ORDER BY column1, column2
LIMIT Outra cláusula muito útil para consultas é a LIMIT. Que permite retornar somente um número especificado de registros da tabela. Muito útil para efeito de paginação do resultado, quando o mesmo não cabe na janela de exibição. Por exemplo, esta consulta retorna somente os dez primeiros contatos cadastrados: SELECT * FROM cadastro LIMIT 1, 10; Programação WEB II
Selecionando Dados - Exemplo <? php $result = mysql_query (" SELECT * FROM cadastro ");?> <table border ='1'> <tr ><th >Nome </th > <th > Sobrenome </th ></tr > <? php while ( $row = mysql_fetch_array ( $result )){?> <tr ><td > <?= $row ['Nome '];? > </td > <td > <?= $row ['Sobrenome '];? > </td ></tr > <? php }?> </table >
Atualizando Dados UPDATE é usado para atualizar registros existentes na tabela. Sintaxe UPDATE table_name SET coluna1=valor, coluna2=valor2 WHERE coluna = valor Nota: Note a cláusula WHERE na sintaxe do UPDATE. A cláusula WHERE especifica qual registro ou registros deve ser atualizado. Se você omitir a cláusula WHERE, todos os registros serão atualizados!
Atualizando Dados Exemplo UPDATE cadastro SET Idade = 36 WHERE cod = 1 A idade do castro de Código 1 será alterado para 36.
Deletando Dados A instrução DELETE é usada para apagar registros da tabela. Apagando dados do Banco de Dados Sintaxe DELETE FROM table_name WHERE some_column = some_value Note: Note a cláusula WHERE na sintaxe do DELETE. WHERE especifica qual registro ou registros serão deletados. Se você omitir a cláusula WHER, todos os registros serão deletados.
Deletando Dados Exemplo DELETE FROM cadastro WHERE idade = 36 Programação WEB II Essa SQL irá apagar os cadastros que tem o campo idade igual a 36.
Trabalho Prático Crie uma agenda de contatos, esta agenda contará com um formulário para cadastrar um novo contato com Nome, Sobrenome, Idade, Telefone e Email. Também terá uma tela para listar os itens cadastrados em uma tabela com dois botões, um para editar e outro para excluir os itens da agenda.