Din mysqli-logik virker fin, der er nogle eksempler i PHP-manualen her hvis du ikke har set dem.
Hvorfor vælger du id'et, når du ikke bruger det? Du behøver heller ikke rigtig at binde et resultat, når det kun vil have én række returneret i det fulde resultatsæt, som jeg antager vil ske i dette tilfælde (ID er unikt indeks i tabellen), brug get_result i stedet.
Brug af mysqli prepare vil beskytte mod alle de almindelige injektionsangreb, men ikke 0-dages stil, som endnu ikke er nået frem til driveren.