Olá pessoal, este é meu primeiro post neste forum, gostaria de compartilhar com vocês esta função que desenvolvi que vem facilitado e muito minha vida, lembrando que estou aberto a criticas, sugestões, correções e implementações no código.
Trata-se de uma função de chamada de geraSql que recebe como parametros
1º O tipo da query. ("INSERT", "UPDATE","DELETE","CREATE");
2º O nome da tabela.
3º Array bidimensional com o nome do campo da tabela e o valor a ser inserido, no caso consigo esse valor través de um $_POST ou até mesmo $_GET.
4º Nome da chave primária na tabela sem o prefixo. *usado somente no UPDATE e DELETE.
5º Valor da chave primária. *usado somente no UPDATE e DELETE.
*Atualmente ele não trata de forms com inputs do tipo FILE.
Implementações são sempre bem vindas.
function geraSql($tipo,$tabela,$array,$chaveprimaria="id",$valorprimaria=null){
$prefixo = substr($tabela,0,3)."_";
if(is_array($array)){
$array = array_diff_key($array,array('submit_x' => 0,'submit_y' => 0,'submit' => 0,'x' => 0,'y' => 0));
$ultima_chave = end(array_keys($array));
switch($tipo){
case "INSERT":
$sql = "INSERT INTO tb_".$tabela."(";
foreach($array as $chave => $valor){
$sql .= $prefixo.strtolower($chave);
if($ultima_chave == $chave){
$sql .= ")";
}else{
$sql .= ",";
}
}
$sql .= " VALUES (";
foreach($array as $chave => $valor){
$sql .= "'".$valor."'";
if($ultima_chave == $chave){
$sql .= ")";
}else{
$sql .= ",";
}
}
$sql .= ";";
break;
case "UPDATE":
$sql = "UPDATE tb_".$tabela." SET ";
foreach($array as $chave => $valor){
$sql .= $prefixo.strtolower($chave)." = '".$valor."'";
if($ultima_chave <> $chave){
$sql .= ",";
}
}
$sql .= " WHERE ".$prefixo.$chaveprimaria." = '".$valorprimaria."';";
break;
case "DELETE":
$sql = "DELETE FROM tb_".$tabela." WHERE ".$prefixo.$chaveprimaria." = '".$valorprimaria."';";
break;
case "CREATE":
$sql = "CREATE TABLE IF NOT EXISTS tb_".$tabela." ( ";
$sql .= $prefixo.$chaveprimaria." int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, ";
foreach($array as $chave => $valor){
$sql .= $prefixo.strtolower($chave)." varchar(256)";
if($ultima_chave != $chave){
$sql .= ", ";
}
}
$sql .= ");";
break;
}
return $sql;
}else{
script('Não é uma array');
}
}
No caso ele gera o código SQL e já cria a tabela e logo na linha abaixo faz a insersão dos valores na tabela utilizando o mysql, para o PostgreSQL basta mudar o mysql_query para pg_query.
Exemplo de uso em um form de atualização.
$codigo = (int) $_GET['codigo'];
mysql_query(geraSql("UPDATE","video",$_POST,"id",$codigo),$connection) or die(mysql_error());
O código ainda está bem crú e sem otimizações e se faz necessário varias modificações e implementações.
Pergunta
Rogério Kleinkauf
Olá pessoal, este é meu primeiro post neste forum, gostaria de compartilhar com vocês esta função que desenvolvi que vem facilitado e muito minha vida, lembrando que estou aberto a criticas, sugestões, correções e implementações no código.
Trata-se de uma função de chamada de geraSql que recebe como parametros
1º O tipo da query. ("INSERT", "UPDATE","DELETE","CREATE");
2º O nome da tabela.
3º Array bidimensional com o nome do campo da tabela e o valor a ser inserido, no caso consigo esse valor través de um $_POST ou até mesmo $_GET.
4º Nome da chave primária na tabela sem o prefixo. *usado somente no UPDATE e DELETE.
5º Valor da chave primária. *usado somente no UPDATE e DELETE.
*Atualmente ele não trata de forms com inputs do tipo FILE.
Implementações são sempre bem vindas.
Exemplo de uso em um form de insersão. No caso ele gera o código SQL e já cria a tabela e logo na linha abaixo faz a insersão dos valores na tabela utilizando o mysql, para o PostgreSQL basta mudar o mysql_query para pg_query. Exemplo de uso em um form de atualização.O código ainda está bem crú e sem otimizações e se faz necessário varias modificações e implementações.
Obrigado.
Editado por Rogério KleinkaufLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.