Gerald... parece que no leíste bien.. o no leíste completo... el problema no es con los nombres de los campos... la asignación
Código PHP:
$_SESSION['id']=$usuario_datos['ID'];
es perfectamente válida si el campo de su bd se llama ID... y no parece haber problema con los nombres, sino con los valores... porque dice claramente que si el valor es cero, no pasa... pero si el valor es otro, llega normal... si el nombre estuviera mal no pasaría con ningún valor.
Saludos