Has nothing to do with bind or mysqli.
When you use apostrophes around anything in SQL (any SQL, not just MySQL), you are creating a STRING. A literal string. Exactly what is in the apostrophes.
In other words, if you use
You *WILL* get a result of exactly username
You surely need to and meant to use backticks (the ` character that shares a keyboard key with the ~ tilde).
$query = "SELECT `userName`,`email`,`code`, ...
But, really, there is no reason to even use them here. You would get the same (correct) results using
$query = "SELECT userName,email,code, ...
You only need to use the backticks when you use a MySQL keyword as a field name or when your field name contains characters (such as spaces, minus signs, periods) that aren't normally valid in field (and table) names.