Linguagem Técnica Orientada – Método (PHP)__________________________________Capítulo 9 CAPITULO 10 FUNÇÕES INTERNAS PHP PARA BANCO DE DADOS Para desenvolver um sistema que utilizará um banco de dados, precisamos estabelecer uma conexão entre a linguagem e este banco de dados. O PHP possui uma série de funções para interagir com vários banco de dados. Utilizaremos o banco de dados postgresql nas aulas, mas isto não impede que você utilize algum outro banco de dados, como mysql por exemplo. Alguns exemplos de funções PHP para banco de dados diversos, nos links abaixo: Banco de dados Funções Mysql http://www.php.net/manual/pt_BR/book.mysql.php Postgresql http://www.php.net/manual/pt_BR/book.pgsql.php http://php.joaquinfernandez.net/pt/pgsql/ref.html Firebird / Interbase http://php.net/manual/pt_BR/ref.ibase.php Não veremos todas as funções existentes, somente as básicas e fundamentais. Exemplos de Algumas Funções internas PHP X Postgresql pg_connect Abre uma conexão PostgreSQL pg_query Executa uma consulta (query). Executar este comando para executar comandos de banco dados (insert, update, delete, select) Funções definidas pelo usuário 1 Linguagem Técnica Orientada – Método (PHP)__________________________________Capítulo 9 pg_fetch_all Retorna todas as linhas (registros) lidas de uma tabela de banco de dados como uma variável do tipo array. Executar esta função sempre após executar a função pg_query. pg_affected_rows() retorna o número de linhas (instâncias/registros/linhas) afetados por consultas (queries) INSERT, UPDATE e DELETE executados por pg_query(). Se nenhuma linha foi afetada, ela retornará 0. EXEMPLOS DE UTILIZAÇÃO DAS FUNÇÕES FUNÇÃO PG_CONNECT A função pg_connect() abre uma conexão com um servidor de banco de dados PostgreSQL. Retorna FALSE se a conexão não pôde ser estabelecida e TRUE caso a conexão tenha sido realizada com sucesso. Para que a função funcione, são necessários os seguintes parâmetros: Host = testa o nome da máquina com a qual será feita a conexão. No nosso caso é localhost, por estamos trabalhando localmente. Se fosse em rede, seria o código IP do servidor. Port = testa o número da porta associada com a conexão. No caso do postgresql a porta é 5432 bdname = nome do banco de dados a ser conectado user = nome do usuário, no nosso caso é postgres password = senha (a mesma escolhida durante a instalação do postgresql) Sintaxe do pg_connect(): pg_connect("host=localhost port=5432 dbname=banco de dados user=usuario password='senha' "); Maiores esclarecimentos : http://www.php.net/manual/pt_BR/function.pg-connect.php Alguns parâmetros não são obrigatórios, como host e port. Devem ser preenchidos, quando a aplicação está em um servidor e o banco de dados em outro. FUNÇÃO PG_QUERY A função pg_query() executa uma query (insert, update, delete, select) Retorna FALSE em caso de falha ou se a conexão for válida. Caso a query esteja correta e se a conexão com o banco de dados for válida, a função será executada e retornará TRUE. Funções definidas pelo usuário 2 Linguagem Técnica Orientada – Método (PHP)__________________________________Capítulo 9 EXEMPLO: Vamos incluir e alterar um registro em uma tabela do banco de dados. Passo 1: Abrir o pgadminIII e criar o banco de dados chamado sistema No banco de dados sistema vamos criar uma tabela pessoa com os campos : matricula integer PRIMARY KEY nome varchar(40) NOT NULL CREATE DATABASE sistema CREATE TABLE pessoa ( matricula integer PRIMARY KEY, nome varchar(40) NOT NULL ) Obs: Nos exemplos que se seguem, vamos trabalhar com dados ESTÁTICOS, com o intuito de conhecer as funções. Para as próximas aulas trabalharmos com telas HTML. Passo 2: Abrir um editor e escrever o script abaixo: incluir.php <?php pg_connect("host=localhost port=5432 dbname=sistema user=usuario password='aulatads' "); // Abaixo atribuindo valores as variáveis, futuramente os dados virão do formulário HTML $matricula = 1; $nome = 'ROSANE'; $sql = "INSERT INTO pessoa (matricula, nome) VALUES ($matricula, '$nome')"; $res = pg_query($sql); // pg_query → executando a query insert ?> A primeira coisa a fazer é sempre estabelecer a conexão com o banco de dados. Logo abaixo, a variável $sql recebe um comando INSERT, igualzinho se fizessemos no pgadminIII. Em breve veremos como fazer utilizando formulário. Por último, a variável $sql será parâmetro da função pg_query() que irá executar o comando INSERT. A função pg_query pode ser utilizada pelo INSERT, UPDATE, DELETE, SELECT. Funções definidas pelo usuário 3 Linguagem Técnica Orientada – Método (PHP)__________________________________Capítulo 9 Vamos fazer o mesmo com o comando UPDATE Passo 3: Abrir um editor e escrever o script abaixo: alterar.php <?php pg_connect("host=localhost port=5432 dbname=sistema user=usuario password='aulatads' "); // Abaixo atribuindo valores as variáveis, futuramente os dados virão do formulário HTML $matricula = 1; $nome = 'ROBERTO'; $sql = "UPDATE pessoa SET nome='$nome' WHERE matricula = $matricula”; // pg_query → executando a query insert $res = pg_query($sql); ?> No caso acima, o comando UPDATE está sendo utilizado para alterar o conteúdo do campo nome, tendo como condição a matricula ser igual a 1. FUNÇÃO PG_FETCH_ALL retorna valores gravados em campos de uma tabela a partir de um resultado gerado por pg_query(). O retorno é em formato de uma variável do tipo array (matriz). Agora vamos fazer um script para selecionar e exibir os dados incluidos, utilizando a estrutura de repetição for() : lista.php <?php pg_connect("host=localhost port=5432 dbname=sistema user=usuario password='aulatads' "); $sql = "SELECT matricula, nome FROM pessoa ORDER BY nome"; $res = pg_query($sql); $lista = pg_fetch_all($res); // transformando os dados selecionados em uma array Funções definidas pelo usuário 4 Linguagem Técnica Orientada – Método (PHP)__________________________________Capítulo 9 for ($indice=0; $indice < sizeof($lista); $indice++) { echo $lista[$indice]['matricula']; echo “ ”; echo $lista[$indice]['nome']; echo “<br>”; } ?> PRÓXIMA AULA: CADASTRO PHP COM BANCO DE DADOS Funções definidas pelo usuário 5