PHP + MySQL: IntroduçãoCarlos SantosLabMM 4 - NTC - DeCA - UAAula 16, 30-04-2013
objetivos do móduloCriar sítios Web dinâmicos com informação armazenada em bases dedados• parte 1: visualização e navegaçã...
novidade do ano letivo anterior...... sem rede de segurança :)
etapas1. estabelecer ligação com o MySQL2. escolher a BD3. extrair dados da BD através de uma query -> recordset4. prepara...
1. estabelecer ligação ao MySQLmysql_connect()• abre uma ligação não persistente ao servidor• existe apenas no âmbito da p...
1. estabelecer ligação ao MySQL$connection = mysql_connect(hostname, username, password);Boas práticas• criar uma pasta “c...
1. estabelecer ligação ao MySQLE se a ligação der erro?$connection = mysql_connect(hostname, username, password)or trigger...
2. escolher a BDmysql_select_db(dbname);Incluir em “connection.php”<?php$hostname = “localhost";$username = “nome_utilizad...
3. extrair dados da BD a partir de uma query$query = "SELECT colunas FROM tabela";$rsName = mysql_query($query , $connecti...
Um recordset é uma estrutura de dados sem índices• o acesso é realizado ao elemento apontado pelo ponteiro• os métodos de ...
4. preparar dados para trabalhar no PHP -> fetchPara utilizar a informação do recordset é necessário preparar (ir buscar)o...
4. preparar dados para trabalhar no PHP -> fetch$row_rsName = mysql_fetch_assoc($rsName);echo $row_rsName[“chave1"];echo $...
4. preparar dados para trabalhar no PHP -> fetch$row_rsName = mysql_fetch_row($rsName);echo $row_rsName[0];echo $row_rsNam...
5. mostrar dadosJá foi exemplificados nos slides do ponto 4 :)É necessário aplicar os conhecimentos adquiridos no módulo an...
6. fechar ligação ao MySQLmysql_close($connection);Boas práticas• o PHP fecha a ligação automaticamente quando o script é ...
No final...// Ficheiro “connections/connection.php”<?php// Define variáveis$hostname = “localhost";$username = “nome_utiliz...
No final...<?php// Ligação à BDrequire_once(connections/connection.php);// Extrair dados da BD$query = "SELECT colunas FROM...
Upcoming SlideShare
Loading in …5
×

LabMM4 (T16 - 12/13) - PHP + MySQL

628
-1

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
628
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
68
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

LabMM4 (T16 - 12/13) - PHP + MySQL

  1. 1. PHP + MySQL: IntroduçãoCarlos SantosLabMM 4 - NTC - DeCA - UAAula 16, 30-04-2013
  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• Encriptação, SVN, MVC, Ajax, APIs, JSON,...
  3. 3. novidade do ano letivo anterior...... 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 servidordepois de aberta, esta será mantida para todas as páginasgestão destas ligações persistentes é feita através da configuração deparâ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 BDrequire_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 comportamentopode 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 porquenã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 paramúltiplos queries numa única chamada!• $rsName é uma variável do tipo “resource” que contem todos os valoresresultantes 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. Um 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”3. recordset
  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 associativearray”• mysql_fetch_row(recordset) - “Get a result row as an enumerated array”• mysql_fetch_array(recordset) - “Fetch a result row as an associativearray, 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[“campo1"];echo $row_rsName[“campoN"];}
  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_row($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 aligação• a não utilização deste método é crítica quando existem scripts muitopesados, 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úmeroinfinito 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 à BDmysql_select_db($dbname);mysql_set_charset(‘utf8’, $connection);?>
  17. 17. No final...<?php// Ligação à BDrequire_once(connections/connection.php);// Extrair dados da BD$query = "SELECT colunas FROM tabela";$rsName = mysql_query($query , $connection);// Mostrar dadoswhile ($row_rsName = mysql_fetch_assoc($rsName)){echo $row_rsName[“campo1"];echo $row_rsName[“campoN"];}// Fechar ligação à BDmysql_close($connection);?>

×