acesso remoto a bases de dados
O MySQL
 Modelo cliente-servidor da solução usbwebserver
                                                                                              O browser cliente pede o ficheiro index.php ao servidor com
                                                                                              endereço IP 127.0.0.1

                       hp                                                                     No servidor, o serviço Apache está à escuta no porto 80.
                    x.p
                  e
               ind .0.1)                                                                      Quando recebe um pedido vai procurar o ficheiro ao directório
             de .0                                                                            definido (root no caso do usbwebserver, ou htdocs noutros)
         ttp 127
       h r                                p L)           http://127.0.0.1/index.php
   ido rvido                       sta ph
  d e                            po dex. HTM
pe (s                          s
                           re a in igo                                                        O Apache observa o código recebido. Se tiver tags <? ?>
                                     d
                            gin có                                                            envia-o ao interpretador PHP para ele o processar (caso o
                        ( pá s c/
                             a
                      ap
                          en                                                                  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
                                                                                  127.0.0.1
                                                                     SQL
                                      html                                                    dados (local ou remoto) - MySQL neste caso - ele próprio
                                                                   resposta
                                                                                              estabelece ligação com o mesmo, envia-lhe uma query de
                                                 interpretador
                                                                                              SQL e recebe a resposta
                  código             <? php ?>
                                                                                              Depois de processado todo o código php, o interpretador
               Pasta root                                                                     devolve ao Apache o resultado da sua tarefa (aqui já só lhe
               do Apache                                                                      devolve código HTML, resultado do seu trabalho)
                (htdocs)

                index.php                                                                     O Apache recebe o código HTML do interpretador e envia-o
                    ...                               127.0.0.1                               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.
O MySQL
Ligação ao servidor através do PHP | código SQL
   SET NAMES latin1;                                                      INSERT INTO `CDs` VALUES
   SET FOREIGN_KEY_CHECKS = 0;                                            ('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
   DROP TABLE IF EXISTS `CDs`;                                            11:42:29'),
                                                                           ('3','New Orleans Jazz','17','4','1','Popular','Jazz','2009-04-06 11:42:29'),
   CREATE TABLE `CDs` (                                                    ('4','Music for Ballet Class','9','4','2','Classical','Dance','2009-04-06 11:42:29'),
     `idCd` smallint(6) NOT NULL auto_increment,                           ('5','Music for Solo Violin','24','2','5','Classical','General','2009-04-06 11:42:29'),
     `nomeCd` varchar(50) NOT NULL,                                        ('6','Cie li di Toscana','16','6','8','Classical','Vocal','2009-04-06 11:42:29'),
     `emStock` smallint(5) unsigned NOT NULL,                              ('7','Mississippi Blues','2','25','6','Popular','Blues','2009-04-06 11:42:29'),
     `emEncomenda` smallint(5) unsigned NOT NULL,                          ('8','Pure','32','3','10','Popular','Jazz','2009-04-06 11:42:29'),
     `emReserva` smallint(5) unsigned NOT NULL,                            ('9','Mud on the Tires','12','15','13','Popular','Country','2009-04-06 11:42:29'),
     `Genero` enum('Classical','Popular') NOT NULL,                        ('10','The Essence','5','20','10','Popular','New Age','2009-04-06 11:42:29'),
     `Categoria` varchar(20) NOT NULL,                                     ('11','Embrace','24','11','14','Popular','New Age','2009-04-06 11:42:29'),
     `RowUpdate` timestamp NOT NULL default CURRENT_TIMESTAMP on update    ('12','The Magic of Satie','42','17','17','Classical','General','2009-04-06
   CURRENT_TIMESTAMP,                                                     11:42:29'),
     PRIMARY KEY (`idCd`,`emEncomenda`)                                    ('13','Swan Lake','25','44','28','Classical','Dance','2009-04-06 11:42:29'),
   ) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=latin1;               ('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 MySQL
Ligaçã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 MySQL
Ligaçã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 MySQL
Ligação ao servidor através do PHP | exemplo prático




          http://aulasftp.netai.net/mysql/act1/

PHP - Queries a um SGBD MySQL

  • 1.
    acesso remoto abases de dados
  • 2.
    O MySQL Modelocliente-servidor da solução usbwebserver O browser cliente pede o ficheiro index.php ao servidor com endereço IP 127.0.0.1 hp No servidor, o serviço Apache está à escuta no porto 80. x.p e ind .0.1) Quando recebe um pedido vai procurar o ficheiro ao directório de .0 definido (root no caso do usbwebserver, ou htdocs noutros) ttp 127 h r p L) http://127.0.0.1/index.php ido rvido sta ph d e po dex. HTM pe (s s re a in igo O Apache observa o código recebido. Se tiver tags <? ?> d gin có envia-o ao interpretador PHP para ele o processar (caso o ( pá s c/ a ap en 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 127.0.0.1 SQL html dados (local ou remoto) - MySQL neste caso - ele próprio resposta estabelece ligação com o mesmo, envia-lhe uma query de interpretador SQL e recebe a resposta código <? php ?> Depois de processado todo o código php, o interpretador Pasta root devolve ao Apache o resultado da sua tarefa (aqui já só lhe do Apache devolve código HTML, resultado do seu trabalho) (htdocs) index.php O Apache recebe o código HTML do interpretador e envia-o ... 127.0.0.1 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.
  • 3.
    O MySQL Ligação aoservidor através do PHP | código SQL SET NAMES latin1; INSERT INTO `CDs` VALUES SET FOREIGN_KEY_CHECKS = 0; ('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 DROP TABLE IF EXISTS `CDs`; 11:42:29'), ('3','New Orleans Jazz','17','4','1','Popular','Jazz','2009-04-06 11:42:29'), CREATE TABLE `CDs` ( ('4','Music for Ballet Class','9','4','2','Classical','Dance','2009-04-06 11:42:29'), `idCd` smallint(6) NOT NULL auto_increment, ('5','Music for Solo Violin','24','2','5','Classical','General','2009-04-06 11:42:29'), `nomeCd` varchar(50) NOT NULL, ('6','Cie li di Toscana','16','6','8','Classical','Vocal','2009-04-06 11:42:29'), `emStock` smallint(5) unsigned NOT NULL, ('7','Mississippi Blues','2','25','6','Popular','Blues','2009-04-06 11:42:29'), `emEncomenda` smallint(5) unsigned NOT NULL, ('8','Pure','32','3','10','Popular','Jazz','2009-04-06 11:42:29'), `emReserva` smallint(5) unsigned NOT NULL, ('9','Mud on the Tires','12','15','13','Popular','Country','2009-04-06 11:42:29'), `Genero` enum('Classical','Popular') NOT NULL, ('10','The Essence','5','20','10','Popular','New Age','2009-04-06 11:42:29'), `Categoria` varchar(20) NOT NULL, ('11','Embrace','24','11','14','Popular','New Age','2009-04-06 11:42:29'), `RowUpdate` timestamp NOT NULL default CURRENT_TIMESTAMP on update ('12','The Magic of Satie','42','17','17','Classical','General','2009-04-06 CURRENT_TIMESTAMP, 11:42:29'), PRIMARY KEY (`idCd`,`emEncomenda`) ('13','Swan Lake','25','44','28','Classical','Dance','2009-04-06 11:42:29'), ) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=latin1; ('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');
  • 4.
    O MySQL Ligação aoservidor 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.
  • 5.
    O MySQL Ligação aoservidor 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 );
  • 6.
    O MySQL Ligação aoservidor através do PHP | exemplo prático http://aulasftp.netai.net/mysql/act1/