V tom update máš vo where klauzule len porovnanie s $date a chýba tam porovnanie s $name. Takže pri prvom update nastavíš kurz a názov meny pre daný deň na rovnaký a ostatné meny v danom dni sa už tým pádom v tabuľke nenájdu, preto sa vykoná insert.
Edit: Ak máš vhodne nastavený primárny kľúč (zložený z dátumu a názvu meny) a neprekáža ti použitie neštandardného príkazu, tak pre MySQL sa môžeš pozrieť na INSERT ... ON DUPLICATE KEY UPDATE.