Q: Prepared Statement and bind_result I was using normal queries previously. But recently started to use prepared statements. I have this question in mind
My Question
Let's say I have a table called files with column names id, name, privilege, acceptance. I need to select only the value of privilege. When using bind_result part, do I need to give all column names inside? or just privilege will do? 
Means, do I need to give this way 
$naming = $_POST['naming'];

$sql = 'SELECT * FROM files WHERE name = ?'; 
if ($stmt = $db->prepare($sql)) {
    $stmt->bind_param('s', $naming); 
    $stmt->execute();

$stmt->bind_result($id, $name, $privilege, $acceptance); OR 
$stmt->bind_result($privilege);
$stmt->fetch();
}
$db->close();

Next question is, how query will know that $id belongs to database id column, $name belongs to database name column, $privilege belongs to database privilege column and $acceptance belongs to database acceptance column, if we are using $stmt->bind_result($id, $name, $privilege, $acceptance);
Last question is, how should I get the value of these variables to use later in PHP? For the normal query, I can use something like $row['id'], $row['name'], $row['privilege'], $row['acceptance'] etc after fetch results. But for prepared statements how to do that?  
