tsudaka 0 Denunciar post Postado Novembro 5, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Novembro 5, 2011 Mudar apenas INSERT INTO por UPDATE não funciona. Confira na documentação :seta: UPDATE Syntax Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Novembro 5, 2011 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