Bonjour,
J'ai la fonction suivante:Cette fonction me renvoie le tout premier enregistrement de la table (avec a.id =1) comme si la clause ORDER BY n'existait pas.
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(); }
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.
Partager