• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
LabMM4 (T16 - 12/13) - PHP + MySQL
 

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

on

  • 833 views

 

Statistics

Views

Total Views
833
Views on SlideShare
830
Embed Views
3

Actions

Likes
0
Downloads
66
Comments
0

1 Embed 3

http://campus.sapo.pt 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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çã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,...
    • 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. preparar dados para trabalhar no PHP -> fetch5. mostrar dados6. fechar ligação ao MySQL
    • 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
    • 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);
    • 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!
    • 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);?>
    • 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);
    • 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
    • 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”
    • 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"];}
    • 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];}
    • 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.
    • 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!
    • 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);?>
    • 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);?>