Aula 01 PHP+MySQL - LabMM4

1.091 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.091
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
144
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula 01 PHP+MySQL - LabMM4

  1. 1. PHP + MySQL: IntroduçãoCarlos SantosLabMM 4 - NTC - DeCA - UAAula PHP+MySQL 01, 02-05-2012
  2. 2. objetivos do móduloCriar sítios Web dinâmicos com informação armazenada em bases dedados • parte 1: visualização e navegação de informação armazenada em BD • visualizar dados de uma tabela • visualizar dados de várias tabelas ligadas entre si • visualizar detalhes de informação específica • parte 2: gestão da informação em BD • inserir novos dados • atualizar dados • apagar dados • parte 3: outras tecnologias interessantes para projetos finais • SVN, MVC, Ajax, APIs, JSON,...
  3. 3. novidade para este ano letivo...... sem rede de segurança :)
  4. 4. etapas1. estabelecer ligação com o MySQL2. escolher a BD3. extrair dados da BD através de uma query -> recordset4. preparar dados para trabalhar no PHP -> fetch5. mostrar dados6. fechar ligação ao MySQL
  5. 5. 1. estabelecer ligação ao MySQLmysql_connect() • abre uma ligação não persistente ao servidor • existe apenas no âmbito da página/script que a usa • deve ser terminada pela função mysql_close()mysql_pconnect() • abre uma ligação persistente ao servidor depois de aberta, esta será mantida para todas as páginas gestão destas ligações persistentes é feita através da configuração de parâmetros no próprio servidor MySQL • wait_timeout • max_connect_errors
  6. 6. 1. estabelecer ligação ao MySQL$connection = mysql_connect(hostname, username, password);Boas práticas • criar uma pasta “connections” • criar um ficheiro “connection.php” com: <?php $hostname = “localhost"; $username = “nome_utilizador"; $password = “password_utilizador"; $connection = mysql_connect($hostname, $username, $password); ?> • incluir o ficheiro em todas as páginas que precisem de interagir com a BD require_once(connections/connection.php);
  7. 7. 1. estabelecer ligação ao MySQLE se a ligação der erro?$connection = mysql_connect(hostname, username, password)or trigger_error(mysql_error(), E_USER_ERROR); • trigger_error() - dispara uma configuração de erro cujo comportamento pode ser controlado com set_error_handler() • mysql_error() - texto do último erro gerado pela última função do MySQL • E_USER_ERROR - “User-generated error message”$connection = mysql_connect(hostname, username, password)|| die(‘Erro na ligação à base de dados’); • este método só deve ser utilizado para debug em desenvolvimento porque não permite um controlo dos erros enviados para o utilizador!
  8. 8. 2. escolher a BDmysql_select_db(dbname);Incluir em “connection.php” <?php $hostname = “localhost"; $username = “nome_utilizador"; $password = “password_utilizador"; $dbname = “nome_basededados”; $connection = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(), E_USER_ERROR); mysql_select_db($dbname); ?>
  9. 9. 3. extrair dados da BD a partir de uma query$query = "SELECT colunas FROM tabela";$rsName = mysql_query($query , $connection); • $query só pode conter uma query e sem “;” no final. Não há suporte para múltiplos queries numa única chamada! • $rsName é uma variável do tipo “resource” que contem todos os valores resultantes da execução do query na respectiva base de dados • retorna FALSE se existiu um erro na execução do queryPara saber o número total de registos do resultado • $totalrows_rsName = mysql_num_rows($rsName);Para libertar espaço de memória ocupado (pouco utilizado) • mysql_free_result($rsName);
  10. 10. 3. recordsetUm recordset é uma estrutura de dados sem índices • o acesso é realizado ao elemento apontado pelo ponteiro • os métodos de fetch fazem avançar o ponteiro para a próxima “linha”
  11. 11. 4. preparar dados para trabalhar no PHP -> fetchPara utilizar a informação do recordset é necessário preparar (ir buscar)os dados através de um processo designado por fetchO fetch dos resultados é realizado linha a linha!Vários métodos disponíveis dependendo do modo como se prefere trataros dados nos passos seguintes: • mysql_fetch_assoc(recorset) - “Fetch a result row as an associative array” • mysql_fetch_row(recordset) - “Get a result row as an enumerated array” • mysql_fetch_array(recordset) - “Fetch a result row as an associative array, a numeric array, or both”
  12. 12. 4. preparar dados para trabalhar no PHP -> fetch$row_rsName = mysql_fetch_assoc($rsName);echo $row_rsName[“chave1"];echo $row_rsName[“chaveN"]; • $row_rsName é um array associativo • o acesso aos valores é realizado através das chaves do array • as chaves são iguais aos nomes dos campos retornados pela query • retorna FALSE se já não existirem dados para fetchPara listar todos os resultadoswhile ($row_rsName = mysql_fetch_assoc($rsName)){ echo $row_rsName[“chave1"]; echo $row_rsName[“chaveN"];}
  13. 13. 4. preparar dados para trabalhar no PHP -> fetch$row_rsName = mysql_fetch_row($rsName);echo $row_rsName[0];echo $row_rsName[N]; • $row_rsName é um array enumerado • o acesso aos valores é realizado através dos índices • retorna FALSE se já não existirem dados para fetchPara listar todos os resultadoswhile ($row_rsName = mysql_fetch_assoc($rsName)){ echo $row_rsName[0]; echo $row_rsName[N];}
  14. 14. 5. mostrar dadosJá foi exemplificados nos slides do ponto 4 :)É necessário aplicar os conhecimentos adquiridos no módulo anterior.Trata-se de utilizar o PHP para tratar os dados dos arrays e mostrar ainformação na página.
  15. 15. 6. fechar ligação ao MySQLmysql_close($connection);Boas práticas • o PHP fecha a ligação automaticamente quando o script é terminado • no entanto, é considerada uma boa prática incluir o método para fechar a ligação • a não utilização deste método é crítica quando existem scripts muito pesados, com longos tempos de processamento, que deixam as ligações “penduradas” durante muito tempo • um servidor de MySQL tem recursos limitados e não aguenta um número infinito de ligações em simultâneo!
  16. 16. No final...// Ficheiro “connections/connection.php”<?php // Define variáveis $hostname = “localhost"; $username = “nome_utilizador"; $password = “password_utilizador"; $dbname = “nome_basededados”; // Estabelece ligação ao MySQL $connection = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(), E_USER_ERROR); // Estabelece ligação à BD mysql_select_db($dbname); mysql_set_charset(‘utf8’, $connection);?>
  17. 17. No final...<?php // Ligação à BD require_once(connections/connection.php); // Extrair dados da BD $query = "SELECT colunas FROM tabela"; $rsName = mysql_query($query , $connection); // Mostrar dados while ($row_rsName = mysql_fetch_assoc($rsName)){ echo $row_rsName[“chave1"]; echo $row_rsName[“chaveN"]; } // Fechar ligação à BD mysql_close($connection);?>

×