Atualizando registros no MySQL
11/09/06
Se você programa em PHP, muito provavelmente já fez algum projeto utilizando banco de dados MySQL. Nem todo mundo conhece algumas funcionalidades que as versões mais novas tem, como a diretriz ON DUPLICATE KEY UPDATE.
Funciona muito bem em aplicações CRUD. Veja um exemplo:
/* MySQL Dump */
CREATE DATABASE url_counter;
CREATE TABLE urls (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
hits INT DEFAULT '0',
last_visit DATETIME
);
Agora, no PHP, poderíamos ter algo assim:
function insert_url($name)
{
$query = sprintf("
INSERT INTO urls
(name) VALUES ('%s')
", mysql_real_escape_string($name));
mysql_query($query);
}
function update_url($id) {
$query = sprintf("UPDATE urls SET hits=hits+1 WHERE id=%d", $id);
mysql_query($query);
}
Agora, se você utilizar a diretriz ON DUPLICATE KEY, é possível fazer tudo isso com apenas uma função:
function url($name, $id='')
{
$query = sprintf("
INSERT INTO urls
(id, name, last_visit, hits)
VALUES
(%d, '%s', NOW(), 1)
ON DUPLICATE KEY UPDATE
hits=hits+1,
last_visit=NOW()
", $id, $name);
mysql_query($query);
}
url('http://google.com/');
url('http://google.com/', 1);
url('http://google.com/', 1);
url('http://yahoo.com/');
url('http://yahoo.com/', 2);
Caso o registro não exista, ele adiciona. Se existir, o MySQL atualiza automaticamente os campos indicados na diretriz ON DUPLICATE KEY. Interessante, huh?
- Permalink
- Trackback
- Comentários (5)
- Ao som de: Allister – Scratch
Webphp
27/08/06
Lightweight framework based on web.py. Only URL handling and action dispatcher was ported.
Leia na íntegra »- Permalink
- Trackback
- Comentários (3)
- Ao som de: Allister – Radio Player
