Si, indicativamente è giusto. In realtà se quella è una query che intendi fare più volte puoi creare uno statement in questo modo:
//prendi denaro, livello, sazieta, occupato
$query= $conn->prepare( 'SELECT gmerci.gmerce_quantity,users.level,users.hunger,users.busy,users.fitness,citta.city_name
FROM users
JOIN gmerci ON users.user_id = gmerci.user_ide
JOIN citta ON users.city_ide = citta.city_id
WHERE gmerci.merce_ide=1
AND gmerci.gmerce_place=1
AND users.name= :username');
$query->bindValue('username', $_SESSION['username']);
$result = $query->execute();
In questo modo se devi fare più volte la query basta che chiami più volte la bindValue e la execute