Click here to load reader
Upload
marco-pinheiro
View
1.672
Download
6
Embed Size (px)
Citation preview
acesso remoto a bases de dados
O MySQLModelo cliente-servidor da solução usbwebserver
O browser cliente pede o ficheiro index.php ao servidor com endereço IP 127.0.0.1
No servidor, o serviço Apache está à escuta no porto 80. Quando recebe um pedido vai procurar o ficheiro ao directório definido (root no caso do usbwebserver, ou htdocs noutros)
O Apache observa o código recebido. Se tiver tags <? ?> envia-o ao interpretador PHP para ele o processar (caso o ficheiro não contenha qualquer tag de php, devolve de imediato o ficheiro ao cliente tal como está guardado)
O interpretador recebe o código PHP e processa-o. Se o código tiver pedidos de ligação a um servidor de Base de dados (local ou remoto) - MySQL neste caso - ele próprio estabelece ligação com o mesmo, envia-lhe uma query de SQL e recebe a resposta
Depois de processado todo o código php, o interpretador devolve ao Apache o resultado da sua tarefa (aqui já só lhe devolve código HTML, resultado do seu trabalho)
O Apache recebe o código HTML do interpretador e envia-o para o browser do cliente
Uma vez que os browsers entendem código HTML, recebem-no e constroem a página com o resultado final pedido.
Pasta root do Apache
(htdocs)
index.php...
http://127.0.0.1/index.php
127.0.0.1
12
7.0
.0.1
SQL
resposta
pedido h
ttp de in
dex.php
(servidor 127.0.0.1)
resposta
(página in
dex.php
apenas c/ código H
TML)
html
código
interpretador
<? php ?>
O MySQLLigação ao servidor através do PHP | código SQL
SET NAMES latin1;SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `CDs`;
CREATE TABLE `CDs` ( `idCd` smallint(6) NOT NULL auto_increment, `nomeCd` varchar(50) NOT NULL, `emStock` smallint(5) unsigned NOT NULL, `emEncomenda` smallint(5) unsigned NOT NULL, `emReserva` smallint(5) unsigned NOT NULL, `Genero` enum('Classical','Popular') NOT NULL, `Categoria` varchar(20) NOT NULL, `RowUpdate` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`idCd`,`emEncomenda`)) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=latin1;
INSERT INTO `CDs` VALUES('1','Bloodshot','10','5','3','Popular','Rock','2009-04-06 11:42:29'), ('2','The Most Favorite Opera Duets','10','5','3','Classical','Opera','2009-04-06 11:42:29'), ('3','New Orleans Jazz','17','4','1','Popular','Jazz','2009-04-06 11:42:29'), ('4','Music for Ballet Class','9','4','2','Classical','Dance','2009-04-06 11:42:29'), ('5','Music for Solo Violin','24','2','5','Classical','General','2009-04-06 11:42:29'), ('6','Cie li di Toscana','16','6','8','Classical','Vocal','2009-04-06 11:42:29'), ('7','Mississippi Blues','2','25','6','Popular','Blues','2009-04-06 11:42:29'), ('8','Pure','32','3','10','Popular','Jazz','2009-04-06 11:42:29'), ('9','Mud on the Tires','12','15','13','Popular','Country','2009-04-06 11:42:29'), ('10','The Essence','5','20','10','Popular','New Age','2009-04-06 11:42:29'), ('11','Embrace','24','11','14','Popular','New Age','2009-04-06 11:42:29'), ('12','The Magic of Satie','42','17','17','Classical','General','2009-04-06 11:42:29'), ('13','Swan Lake','25','44','28','Classical','Dance','2009-04-06 11:42:29'), ('14','25 Classical Favorites','32','15','12','Classical','General','2009-04-06 11:42:29'), ('15','La Boheme','20','10','5','Classical','Opera','2009-04-06 11:42:29'), ('16','Bach Cantatas','23','12','8','Classical','General','2009-04-06 11:42:29'), ('17','Golden Road','23','10','17','Popular','Country','2009-04-06 11:42:29'), ('18','Live in Paris','18','20','10','Popular','Jazz','2009-04-06 11:42:29'), ('19','Richland Woman Blues','22','5','7','Popular','Blues','2009-04-06 11:42:29'), ('20','Morimur (after J. S. Bach)','28','17','16','Classical','General','2009-04-06 11:42:29'), ('21','The Best of Italian Opera','10','35','12','Classical','Opera','2009-04-06 11:42:29'), ('22','Runaway Soul','15','30','14','Popular','Blues','2009-04-06 11:42:29'), ('23','Stages','42','0','8','Popular','Blues','2009-04-06 11:42:29'), ('24','Bach: Six Unaccompanied Cello Suites','16','8','8','Classical','General','2009-04-06 11:42:29');
O MySQLLigação ao servidor através do PHP | as funções
• mysql_connect ( endereço do servidor, utilizador, password ) -> Estabelece ligação com servidor de base de dados
• mysql_select_db ( nome da base de dados, variável de ligação ) -> Abre base de dados
• mysql_query ( query de sql ) -> Envia uma query à base de dados (INSERT, UPDATE, DELETE OU SELECT).
• mysql_fetch_array ( variável de resultado da query ) -> Devolve array com campos de uma linha e avança ponteiro para linha (registo) seguinte.
• mysql_num_rows ( variável de resultado da query ) -> Devolve o número de registos da consulta (query)
• mysql_close ( variável de ligação ) -> Encerra a ligação com o servidor.
O MySQLLigação ao servidor através do PHP | exemplo funcional/////////////////////////////// configuração de acesso ao servidor de base de dados /////////////////////////////////////////$servidor="localhost"; $utilizador="root"; $passwd="esap"; $baseDados = "Aula1";//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$ligacao = mysql_connect ( $servidor, $utilizador, $passwd ) or die ( 'Erro ao ligar ao servidor... ' . mysql_error() );mysql_select_db ( $baseDados, $ligacao ) or die ( 'Erro ao executar mysql_select_db: ' . mysql_error () );
$query_sql = " SELECT * FROM CDs WHERE Categoria='Blues' ";$resultado = mysql_query ( $query_sql ) or die ( 'Erro ao executar mysql_query: ' . mysql_error () );echo ("<h1> Primeira ligação à BD {$baseDados} </h1>");echo ("<h3> Vou fazer a seguinte query: {$query_sql} </h3>");
$contador = 1;
while ( $linhaTabela = mysql_fetch_array ( $resultado ) ){ echo ("{ $contador } > {$linhaTabela ['nomeCd']} - {$linhaTabela ['Categoria']} <br />"); $contador++;}
echo ("<h4> Número de registos encontrados na tabela: " . mysql_num_rows ( $resultado ) . "</h4>");mysql_close ( $ligacao );
O MySQLLigação ao servidor através do PHP | exemplo prático
http://aulasftp.netai.net/mysql/act1/