Postagens

Mostrando postagens de maio, 2013

PHP/MySQL - Usando array_keys e implode para criar inserts no MySQL

Vimos em um artigo anterior uma técnica interessante para passar parâmetros para funções, classes ou métodos . Hoje vamos a uma dica rápida utilizando o conceito acima mais as funções array_keys e implode do PHP para criar uma função que monta um insert para o MySQL . O Codeigniter e outros frameworks possuem helpers que usam uma idéia parecida, ou seja, inserimos o nome de uma tabela e pares chave=>valor através de uma array e o helper cria a query e a executa no banco de dados . Poderíamos fazer o procedimento utilizando foreach() , mas eu acho muito deselegante utilizá-lo no contexto em que estamos, além do que é melhor utilizar sempre funções internas do PHP (quando possível) do que fazê-las 'na mão', pois a função compilada é bem mais eficiente do que a interpretada. Neste caso que estamos abordando talvez nem fizesse tanta diferença, pois usamos poucos parâmetros e chamamos três vezes as funções internas, mas serve como uma boa ilustração de uma maneira

PHP/MySQL - Organizando melhor as subqueries

Imagem
Em um artigo anterior tratei das Subqueries como sendo uma espécie de tabela virtual, utilizada para pré selecionar dados . Hoje vou mostrar uma dica rápida para organizar melhor nossas Querie s utilizando este conceito de Subquerie . É sabido que uma Query pode virar um monstro rapidamente se tivermos de fazer algo muito específico como o intuito de evitar outras Queries . Explico melhor: Em algumas situações temos de efetuar duas, três, quatro Queries separadas no banco de dados , juntar tudo isto via PHP ou seja lá o programa que se esteja usando, para retornar a informação completa de que necessitamos. Porém, em grande parte dos casos, ao invés de usar este tipo de "gambi" podemos fazer um Select mais robusto, mas que envolve Subqueries , ou seja, uma Query dentro de outra na mesma consulta. Este tipo de abordagem pode levar a "monstros" como o exemplo abaixo: $query = " SELECT * FROM ( SELECT *, @var := @var +

MySQL - REGEXP (EXPRESSÕES REGULARES) no MySQL

Expressões regulares são um tema, diriamos, meio "cabeludo" pois a sua sintaxe não ajuda muito no quesito "dicas de como funciona". Geralmente trabalhar bem com REGEXP significa muito tempo de prática para "pegar o jeito" mais do que decorar livros ou soluções prontas. Mas não é por isto que vamos desanimar de trabalhar com elas, pois são extremamente poderosas. O que alguns podem não saber, ou sabem mas não estão familiarizados, é que podemos utilizar também nos bancos de dados as famosas REGEXPs , alguns com mais outros com menos restrições. As REGEXPs também nos passam a falsa ilusão de que podemos utilizá-las não só para filtrar dados mas também para pegar "pedaços" da informação já selecionada. Vamos tratar disto mais adiante. Nosso foco hoje é ver um pouco das expressões regulares aplicadas no MySQL , as armadilhas, equivocos e soluções desta ferramenta tão poderosa. Infelizmente o MySQL não aceita todas as REGEXPs que, por exemplo

PHP - Redirects com header() para SEO e demais finalidades

Hoje vou apresentar uma dica rápida: header('Location:') e redirecionamento de URLs. Headers em PHP são um assunto bem extenso e que merecem outros artigos e por isto hoje o foco será o 'Location'. As formas abaixo são as maneiras mais fáceis de se fazer redirects de vários tipos, ou seja, varios 'significados' para o browser e para os robôs de busca. // 301 Movido permanentemente header("Location: /foo.php",TRUE,301); // 302 Encontrado (se não forem fornecidos parametros assume 302) header("Location: /foo.php",TRUE,302); header("Location: /foo.php"); // 303 Ver outro header("Location: /foo.php",TRUE,303); // 307 Redirecionamento temporário header("Location: /foo.php",TRUE,307); Se você está utilizando header('Location:') é uma boa prática incluir os parâmetros adicionais para que os robôs e browsers possam compreender melhor o que está ocorrendo com sua página. Da lista acima acredit