DGmike

DGmike

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

  • Alice Andrade
  • Rafael Zamana
Você está aqui: dgmike » Arquivos para sql

  • 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 é dgmike?

Dados de teste

Posted in Programação, Tecnologia, Trabalho, sql by DGmike
Mar 18 2010
TrackBack Address.

Um projeto de verdade deve ser testado de várias formas possíveis. Já falei sobre teste unitários e como aumentar a produtividade com isso num evento de porte internacional. Agora, sabe quando você precisa criar vários registros no banco de dados[bb] só para mostrar ao cliente como o sistema vai ficar, ou quando você precisa de dados aleatórios dos mais variados tipos para saber se o sistema aguenta o tranco?

Todas as máquinas enviam registros a apenas um servidor de banco de dados

Gerar dados de forma simples como se fossem várias máquinas

É muito chato quando precisamos inserir no banco de dados vários registros para teste, você passa horas e horas apenas inserindo informações que você deve gerar de sua própria cabeça. Para resolver esse problema, existe um bom aplicativo web chamado Generate Data, onde você define a tabela e os campos e o que cada campo irá possuir.

Por exemplo, você está escrevendo um aplicativo de agenda pessoal com as seguintes tabelas:

usuario:
    id: int auto_increment
    nome: varchar(50)
 
telefone:
    id: int auto_increment
    id_usuario: int
    tipo: enum(celular,residencial,trabalho)
    numero: varchar(14)

Então, você só precisa inserir 30 registros para usuário, dizendo que o campo nome é um “full name” e ele gera vários nomes aleatórios para você não ter problemas de repetir dados.

Para a tabela telefone, coloque o “id_usuario” como um número inteiro entre 1 e 30. Para o campo tipo um valor string entre “celular”, “residencial” ou “trabalho”. E o campo numero ganhará um telefone no formato (XX) XXXX-XXXX. O legal é que o generate data dificilmente vai te deixar na mão, mas na maioria das vezes você consegue gerar registros de testes para seus projetos. Ele ainda consegue exportar os dados em vários – SQL, CSV, Excel, XML ou HTML[bb] e anda existe uma versão para download que você pode fazer rodar em sua máquina sem precisar estar online ou modificá-lo para alterar os dados que serão gerados como por exemplo, cidades e estados brasileiros. Fica a dica para aumentar sua produtividade[bb].

1 Comment »
Tagged as: banco de dados, dados, gerador, model, sql

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'
  • Dados de teste
  • Insert simples de SQL
  • IcePHP: O framework gelado como um picolé!
  • CodeShow: cobras versionadas
  • PDO e classe de resultados

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  (73)
  • CSS  (20)
  • Design  (2)
  • Dia-a-dia  (33)
  • Diversão  (18)
  • eventos  (10)
  • extensions  (11)
  • flash  (4)
  • Games  (1)
  • html  (7)
  • icephp  (4)
  • Ilustração  (6)
  • Imagem  (8)
  • Inspiração  (5)
  • javascript  (36)
    • jQuery  (7)
    • yui  (2)
  • Não categorizado  (26)
  • Navegadores  (19)
    • Chrome  (6)
    • Firefox  (18)
    • Internet Explorer  (6)
  • pagseguro  (12)
  • php  (43)
    • PHP Conference  (3)
  • plugin  (3)
  • Programação  (46)
  • python  (5)
  • Semântica  (16)
  • sql  (9)
  • tableless  (18)
  • Tecnologia  (48)
  • Trabalho  (28)
  • Tutorial  (25)
  • Vetorial  (5)
  • video  (8)
  • 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 dinheiro 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 tableless Tecnologia Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • Vírgula em html5 e css3
  • Youtube e HTML5, agora ficou mais fácil
  • Novo emprego!
  • Até mais e obrigado pela salada
  • Api de teste do meadiciona.com

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro 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 tableless Tecnologia Tutorial twitter visie web wordpress

Conteúdo

  • Artigos
    • JavaScript (parte 1)
  • Códigos prontos
    • Bancos, bancos e mais bancos…
    • Classe sqlsimples e sql – PHP
    • PHP: Função __auloload()
  • Guia Rápido jQuery
  • PagSeguro
  • Quem é dgmike?
PagSeguro Powered by WordPress | “Blend” from Spectacu.la WP Themes Club