Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tsudaka

update em sql com php

Recommended Posts

Para adicionar um registro no sql uso, algo mais ou menos assim

$insere = "INSERT INTO tabela (lala, lalab) VALUES ('$lalaa', '$lalab')";
mysql_query($insere);

 

porém para alterar, no update

 

$altera= "UPDATE  tabela SET lala = '$novolala',obs = '$asobs'  WHERE id = '$id' " ;
// Executa a query
$acaonosqlaltera = mysql_query($altera); 

 

não sei se há algum erro acima pois escrevi errado, foi apenas para explicar melhor minha dúvida... Gostaria de saber se é possível alterar os dados da mesma forma que adiciona, ou seja, alterando apenas o INSERT INTO para UPDATE, isso iria facilitar quando houver muitos valores.

 

Desde já, agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pense um pouco melhor. Facilitaria? Não muito, basta usar a cabeça um pouco.

Você não recebe esses dados de um formulário? Esses dados chegam (espero eu) via POST e são acessados através da variável superglobal $_POST, certo?

 

$_POST é um array associativo. Para facilitar sua vida, os nomes dos campos no formulário HTML devem possui o mesmo nome do campo correspondente na tabela do banco de dados.

 

Vamos criar uma função, ou melhor, três, para tornar menos chata essa função de escrever queries no braço:

 

function createInsertStatement($table, array $data){
$fields = array_keys($data);
$values = array_values($data);
foreach($values as &$val){
   	$val = quote($val);
}

$sql = 'INSERT INTO ' . $table . '(' . join(', ', $fields) . ') VALUES (' . join(', ', $values) . ')';
return $sql;
}

function createUpdateStatement($table, array $data){
$set = array();
foreach($data as $field => $val){
		$set[] = $field .= quote($val);
}
$sql = 'UPDATE ' . $table . ' SET ' . join(', ', $set);
}

function quote($str) {
if(is_int($value)) {
	return $value;
} else if(is_float($value)) {
   	return sprintf('%F', $value);
} else {
   	return "'" . addcslashes($value, "\000\n\r\\'\"\032") . "'";
}
}

 

Agora é só fazer, algo como:

mysql_query(createUpdateStatement('nome_da_tabela', $_POST));
mysql_query(createInsertStatement('nome_da_tabela', $_POST));

 

Lembrando que por questões de segurança, você deve fazer um pré-processamento dos dados em $_POST, o código acima é só um exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.