ошибок никаких не выводит
<?php
$host="localhost";
$user="root";
$pass="";
$db_name="buy";
$link=mysql_connect($host,$user,$pass,$db_name);
if (isset($_POST["done"])) {
$s=mysql_query("INSERT INTO `data` (`date`, `comments1`, `income`, `balance`, `expenses`, `comments2`)
VALUES ('".time()."','".$_POST['comments1']."','".$_POST['income']."','".$_POST['balance']."','".$_POST['expenses']."','".$_POST['comments2']."')");
echo $s;
mysql_close;
}
?>


Во-первых, использование функций mysql_* в php объявлено deprecated, а в современном php этой функции вообще нет.
Если вы себе выключили выдачу предупреждений и ошибок, то это не значит, что их нет.
Функции mysql_* надо заменять на обертку PDO с соответствующим провайдером (в вашем случае pdo_mysql). Погуглите по строчке "migrate from mysql_".
Далее, (если игнорировать использование устаревших функции) вам надо проверять значений функций. Например, mysql_connect выдает какое-то значение, которые вы нигде в коде не проверяете.
Returns a MySQL link identifier on success or FALSE on failure.
Понимаете, не в 100% случаев у вас гарантированно будет открытие БД. Иногда она не открывается, совершенно неожиданно для вас.
mysqli_query применяется, и вообще сначало проверь подключен ли ты к базе данных, пропиши после $link=mysql_connect($host,$user,$pass,$db_name); пропиши if ($link) echo 'ok';
else echo 'eroor'; если ты подключен и все нормально можно работать с остальным, да и вообще я вижу что в переменной pass нет пароля, наверное ты работаеш на локальном хостинге, а на локал хосте большие проблемы с php