Din mysqli-logik verkar bra, det finns några exempel i PHP-manualen här om du inte har sett dem.
Varför väljer du ID när du inte använder det? Du behöver inte heller binda ett resultat när det bara kommer att returneras en rad i hela resultatuppsättningen som jag antar kommer att hända i det här fallet (ID är unikt index i tabellen), använd get_result istället.
Att använda mysqli prepare skyddar mot alla vanliga injektionsattacker men inte 0-dagars grejer som inte har nått föraren än.