DGmike

DGmike

Calma! não entre em pânico! Amanhã (talvez) tem novo post…

  • Alice Andrade
  • Rafael Zamana
  • Home
  • Guia Rápido jQuery
  • Códigos prontos
    • PHP: Função __auloload()
    • Classe sqlsimples e sql – PHP
    • Bancos, bancos e mais bancos…
  • PagSeguro
  • Artigos
    • JavaScript (parte 1)
  • Quem?

Post Rápido: Unir dois resultados em um só SQL

Posted in Tutorial, sql by DGmike
Mar 30 2009
TrackBack Address.

Aqui onde estamos trabalhando (@rodrideme e @deninhu) precisamos fazer uma busca em dois bancos de dados e mostrar o resultado em um lugar só. Por que? Porque temos dois bancos de dados e em um ficarão os registros de quem já é registrado, e no outro quem ainda não é registrado, mas que pode vir a se registrar (mas isso é outra história).

Banco de dados. Sempre que puder, use esta ferramenta para ajudar no seu dia a dia

Banco de dados

Aqui nós estamos trabalhando com db2[bb], mas o que irei mostrar é independente de banco.

Tá, para de enrolar e fala logo!

Você pode unir dois resultados (inclusive de drivers/bancos que estejam na mesma conexão) em um unico result, mesclando os dados. Para isso use a estrutura UNION.

Tome as seguintes queries:

1
2
3
SELECT cod, nome, idade FROM pessoas
 
SELECT codigo, nome_completo, idade FROM pessoas_nao_cadastradas

Primeiro, você deve ter resultados iguais para cada select, para isso use alias para igualar os resultados.

1
2
3
SELECT cod, nome, idade FROM pessoas
 
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas

Agora, basta você usar o UNION entre os dois selects:

1
2
3
SELECT cod, nome, idade FROM pessoas
UNION
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas

Pronto! Você tem o resultado de dois bancos de dados mesclados em um só.

Legal, mas como faço WHERE nisso?

Você deve fazer um where ou nos dois selects ou fazer um select que totaliza os dois (como eu gosto de fazer):

1
2
3
4
5
SELECT z.* FROM (
  SELECT cod, nome, idade FROM pessoas
  UNION
  SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas
) z WHERE nome = 'Michael'
  • Insert simples de SQL
  • IcePHP: O framework gelado como um picolé!
  • PDO e classe de resultados
  • Campo DataTransacao no retorno do PagSeguro
  • Post Rápido: Prevenindo SQL injection

2 Comments »
Tagged as: banco, banco de dados, dados, database, db2, dois bancos, mesclar, querie, query, select, sql, union

Post Rápido: Prevenindo SQL injection

Posted in Programação, php, sql by DGmike
Mar 14 2009
TrackBack Address.

Vendo o Viva o Linux, me deparei com uma ótima função para você tratar os dados que vem do input provavelmente inseridos pelos usuários para que eles não façam o temivel SQL injection em seu site. Não sei até que ponto podemos excluir algumas palavras do usuário, como “from” ou “select” vai que ele realmente escreveu “come from my house” mas está valendo. Eis o código escrito por Alexandro:

Segurança a SQL Injection para PHP

Segurança a SQL Injection para PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
# Função Anti MySQL Injection - Proteja suas aplicações!
# Por Alexandro G. Correa - Porto Alegre - RS
# alex.linux (at) gmail.com
# 13/03/2009

function anti_injection($sql){
  $sql = preg_replace(sql_regcase('/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/'), '',$sql);
  $sql = trim($sql);
  $sql = strip_tags($sql);
  $sql = (get_magic_quotes_gpc()) ? $sql : addslashes($sql);
  return $sql;
}

Uma coisa legal, aprendi a usar o sql_regcase() do PHP.

3 Comments »
Tagged as: php, proteção, sql

Insert simples de SQL

Posted in php, sql by DGmike
Sep 27 2008
TrackBack Address.

Uma funçãozinha simples que ajuda muito para trabalhar com inserção de dados no SQL (MySQL, MS-SqlServer, SQLite ou PostGree, por exemplo) pelo PHP. O comando SQL para realizar a inserção é:

INSERT INTO `tabela` (`campo1`,`campo2`,`campo3`...) VALUES (`valor1`,`valor2`,`valor3`...);

Desta forma, deixamos os dados separados de forma dificil de manipular… Então desenvolvi esta função em PHP para minha classe SQL.

function adicionar_sql ($tabela,$dados) {
if (is_array($dados)) {
$keys='';
foreach ($dados as $k=>$v) {
$keys[]="`$k`";
$values[]=$v==='NOW()'?"NOW()":$v;
}
$keys=implode(', ',$keys);
$values=implode(', ',$values);
return "INSERT INTO `$tabela` ($keys) VALUES ($values)";
}
return false;
}

Ela funciona da seguinte forma:

adicionar_sql ('tabela', array (
'campo1'=>'valor1',
'campo2'=>'valor2',
'campo3'=>'valor3',...
));

Esta função também está habilitada para o valor NOW() que coloca o valor da hora atual no banco de dados.

[update] Fiz uma leve alteração no código, usando funções que facilitam e deixar a função mais rápida, por se tratar de função interna do próprio PHP. O interessante é que ficou com menos linhas de código e mais compreensível.

function adicionar_sql($tabela, $dados = array()){
  if (!is_array($dados)) return false;
  foreach ($dados as $k=>$v)
    $dados[$k] = $v==='NOW()' ? 'NOW()' : "'".addslashes($v)."'";
  return sprintf ('INSERT INTO %s (`%s`) VALUES (%s);', $tabela, implode('`, `', array_keys ($dados)), implode(', ', $dados));
}

3 Comments »
Tagged as: banco de dados, insert, insert simples, ms-sql, mysql, php, postgree, simples, sql

Categorias

  • Amigos  (16)
  • cases  (4)
  • Cotidiano  (71)
  • CSS  (19)
  • Design  (1)
  • Dia-a-dia  (29)
  • Diversão  (18)
  • eventos  (9)
  • extensions  (11)
  • flash  (3)
  • Games  (1)
  • html  (5)
  • icephp  (4)
  • Ilustração  (6)
  • Imagem  (8)
  • Inspiração  (5)
  • javascript  (35)
    • jQuery  (7)
    • yui  (2)
  • Não categorizado  (27)
  • Navegadores  (17)
    • Chrome  (4)
    • Firefox  (16)
    • Internet Explorer  (5)
  • pagseguro  (10)
  • php  (41)
    • PHP Conference  (2)
  • plugin  (3)
  • Programação  (41)
  • python  (5)
  • Semântica  (16)
  • sql  (8)
  • tableless  (18)
  • Tecnologia  (46)
  • Trabalho  (25)
  • Tutorial  (23)
  • Vetorial  (5)
  • video  (7)
  • video-tutorial  (5)
  • Windows  (4)
  • wordpress  (2)
  • xHTML  (23)

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql online opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql string tableless Tecnologia Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • Frete com PagSeguro: simples!
  • Palestra PagSeguro na Impacta
  • PagSimples: faça combranças facilmente com o PagSeguro
  • IcePHP agora é IceBaby
  • O PagSeguro mudou a URL de retorno automático, e agora?

Amigos

  • Alice Andrade
  • Rafael Zamana
Powered by WordPress | “Blend” from Spectacu.la WP Themes Club