il fatto è che MySQL usa il punto come separatore per i decimali. Potresti usare la funzione FORMAT di MySQL per rappresentare il valore FLOAT con il punto come segue:

$val = 1148.16;
$sql = "INSERT INTO tabella(val) VALUES (FORMAT('$val', 2))"

FORMAT scrive il valore di $val con due cifre decimali separate da una virgola, quindi scriverebbe 1148,16