Bonjour,

J'ai la fonction suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getDefaultPersonId(int $userId): false|array
{
	$db = dbConnect();
	var_dump($userId);		// 2
 
	$sql = <<<SQL
SELECT a.id
FROM dat_addresses a
	INNER JOIN dat_families f
		ON a.id=f.id_address
WHERE id_user=:userId AND relation=0
ORDER BY f.familyname, f.firstname
LIMIT 1
SQL;
	$stmt = $db->prepare($sql);
	$stmt->execute([':userId'=>$userId]);
	return $stmt->fetch();
}
Cette fonction me renvoie le tout premier enregistrement de la table (avec a.id =1) comme si la clause ORDER BY n'existait pas.
Si dans Wampserver, je fais la même requête en remplaçant uniquement le paramètre par sa valeur c'est à dire WHERE id_user=:userId AND relation=0 par WHERE id_user=2 AND relation=0, j'obtiens bien la réponse attendue, c'est à dire l'id de l'enregistrement dont le nom et le prénom sont les premiers dans l'ordre alphabétique. Si je fais la même chose dans ma fonction, j'obtiens toujours 1 au lieu de l'id voulu.
J'ai aussi essayé de préciser l'ordre de tri comme ceci: ORDER BY f.familyname ASC, f.firstname ASC mais la réponse reste la même c.à.d 1.