次のコード スニペットを検討してください。
$day = '3'; // form input
...
$stmt = $conn->stmt_init();
$q = 'INSERT INTO recording (release_day) VALUES(?)';
$stmt->prepare($q);
$stmt->bind_param('i', $day);
$stmt->execute();
...
変数$dayはフォーム入力からの文字列ですが、整数にバインドしています。データベース列は smallint データ型です。
データベースが整数を取得していると思いますよね?バインディングの前にある種の型キャストを行う必要がありますか? 良い習慣とは何ですか?