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/