Si la columna es numérica, porqué encierras los valores entre comillas?
'NULL' no es igual a NULL y tal vez MySQL intenta convertir a número, resultando en cero.
Tu código debería ser más o menós así:
Código PHP:
Ver originalif (empty($gollocal[$i])){ // Entre comillas, porque el NULL de PHP no es igual al de MySQL
$gollocal[$i] = 'NULL';
}
// Luego, en la consulta:
$sqlupdate ="UPDATE liga_calendario SET goles_local={$gollocal[$i]}, goles_visitante={$golvisitante[$i]} WHERE id='".$ids[$i]."'";
Las llaves te permiten integrar elementos de array() en una cadena para que sean interpretados.