# $n_primary = nº de chaves primárias
function mysql_replace($tabela, $array_campos_valores, $escapa = false, $n_primary = 1) {
# escapa
if ($escapa) $array_campos_valores = array_map('sql', $array_campos_valores);
# monta a query
$query = "insert into $tabela (" . implode(', ', array_keys($array_campos_valores)) .
") values ('" . implode("', '", $array_campos_valores) . "') on duplicate key update ";
# monta update
$up = array();
foreach($array_campos_valores as $campo => $valor) {
if ($n_primary--) continue;
$up[] = "$campo = '$valor'";
}
# complementa a query
$query .= implode(', ', $up);
# executa a query
$ok = execsql($query);
# retorna o last_insert_id
if (!$ok) return false;
return mysql_insert_id();
}