mysqliロジックは問題ないようです。ここに、PHPマニュアルにいくつかの例があります。 あなたがそれらを見たことがない場合に備えて。
消費しないのになぜIDを選択するのですか?また、この場合に発生すると想定されるように、完全な結果セットで1行のみが返される場合は、結果をバインドする必要はありません(IDはテーブル内の一意のインデックスです)。 get_result 代わりに。
mysqli prepareを使用すると、すべての一般的なインジェクション攻撃から保護されますが、まだドライバーに到達していないゼロデイスタイルのものは保護されません。