você está aqui: Home  → Arquivo de Mensagens

Usando SQLs em PHP apartir de um arquivo de funções

Colaboração: Eduardo Ferreira de Carvalho

Data de Publicação: 06 de Fevereiro de 2005

A minha dica será como implementar um arquivo com funções SQL para serem utilizadas em arquivos PHP possibilitando até trabalhar com camadas.

UM recurso interessante é centralizar num único arquivo todas as conexões ao banco de dados, no meu caso MYSQL. Para isso criei um arquivo db_sql.php que possui o seguinte código:

  <?php
  
  if (function_exists("DbQuery")==false)
  {
  function DbQuery($Query,$type)
  {
    $DbQueryResult=mysql_query($Query);
  
    if ($type==1)
    {
     $NumFields=mysql_num_fields($DbQueryResult);
  
     for ($c=0;$c<=($NumFields-1);$c++)
     {
      $Name[$c]=mysql_field_name($DbQueryResult,$c);
     }
  
     $QueryResultAll=mysql_fetch_array($DbQueryResult);
  
     for($d=0;$d<=($NumFields-1);$d++)
     {
      $QueryResult[$Name[$d]]=$QueryResultAll[$d];
     }
    }
  
    if ($type==2)
    {
     $NumRegist=mysql_num_rows($DbQueryResult);
  
     $NumFields=mysql_num_fields($DbQueryResult);
  
     for ($c=0;$c<=($NumFields-1);$c++)
     {
      $Name[$c]=mysql_field_name($DbQueryResult,$c);
     }
  
     for ($c=0;$c<=($NumRegist-1);$c++)
     {
      $QueryResultAll[$c]=mysql_fetch_array($DbQueryResult);
  
      for($d=0;$d<=($NumFields-1);$d++)
      {
       $QueryResult[$c][$Name[$d]]=$QueryResultAll[$c][$d];
      }
     }
    }
  return $QueryResult;
  }
  }
  
  if (function_exists("db_connect")==false)
  {
  function db_connect()
  {
  include "constantes.php";
  $link=mysql_pconnect($host,$user,$pass);
  if ($link)
  {
   mysql_select_db($BD,$link);
  }
  }}
  
  if (function_exists("db_query")==false)
  {
  function db_query($query)
  {
  $resultado=mysql_query($query);
  return TRUE;
  }}
  
  ?>

Neste arquivo existem 3 funções: DbQuery(), db_connect() e db_query().

  DbQuery() - função para utilização de SELECT
  db_connect() - função que conecta ao banco de dados
  db_query() - função para utilização de INSERT, UPDATE e DELETE

Para todos os arquivos php que utilizarão as funções SQL, coloca-se:

  require("db_sql.php");
  db_connect();

Depois a chamada para uma das funções:

  <?php
  .....
  $sql="UPDATE t1 SET c1='$var1' WHERE c2='$var2'";
  $result=db_query($sql);
  
  $sql="SELECT nome FROM t1";
  $linha=DbQuery($sql,2);
  $TotalRegistros = $linha[NumRegist];
       $c = 0;
       if ($linha)
       {
        while($linha[$c])
        {
         $Atual = $linha[$c];
         $nome=$Atual[nome];
         $c++;
        }
      }
  
  $sql="SELECT nome FROM t1 WHERE c1='$var1'";
  $linha=DbQuery($sql,1);
  $nome=$linha[nome];
  .....
  ?>

Onde em DbQuery(), $sql é a string que será o comando SQL enviado e valor=1 avisa para a função que somente retornará um valor do SELECT e valor=2 valores com mais de um registro.

Onde em db_query(), $sql é a string que será o comando SQL enviado.

Onde em db_connect(), o include constantes.php é o arquivo na qual conterá as variáveis $host, $user, $pass e $BD que são essenciais para a conexão com o BD.

Bom, é isso e espero ter ajudado bastante nesta minha primeira postagem em Dicas-L. Qualquer dúvida sobre o código mande-me um e-mail <edufc (a) fem unicamp br> ou pelo MSN <webcemib (a) hotmail com>.


Estatisticas do NBSO: Incidentes -- totais 2004 e 4o trimestre

Estao disponíveis em http://www.nbso.nic.br/stats/incidentes/ as estatísticas dos incidentes reportados ao NBSO (NIC BR Security Office) em 2004, incluindo:

  • os totais anuais agrupados (2004: janeiro a dezembro);
  • o quarto trimestre de 2004 (2004: outubro a dezembro).

    Nos valores agrupados para o ano de 2004, chamam a atenção os seguintes fatores:

  • aumento significativo no número de fraudes, que agora responde por 7% das notificações, e teve um crescimento de aproximadamente 550% em relação ao ano de 2003.
  • as varreduras (scans) foram distribuídas em diversas portas, crescendo bastante o número de varreduras à porta 22/TCP. Estas varreduras têm sido geralmente casos de tentativas de login via força bruta, utilizando ataques de dicionários.

    Nos valores relativos ao quarto trimestre de 2004 cabe destacar:

  • a primeira posição entre as portas varridas ocupada pela 22/TCP, que veio crescendo ao longo do ano.
  • a concentração de quase metade das notificações de fraudes do ano neste trimestre.
  • também continuou constante a exploração de problemas relacionados com PHP em casos de comprometimentos e desfigurações de páginas.
  • o número de notificações de fraudes teve um grande crescimento em dezembro, sendo que este mês sozinho apresentou um número maior que o de todo o ano de 2003.

    Atenciosamente,

      NBSO -- NIC BR Security Office <nbso at nic.br>
      Brazilian Computer Emergency Response Team
      http://www.nbso.nic.br/
    



 

 

Veja a relação completa dos artigos de Eduardo Ferreira de Carvalho

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script