Bonjour,

J'ai un "petit soucis" avec cette requête. Comme vous le verrez plus bas j'ai plusieurs fois :campaign et :member qui dans la requête ont exactement la même valeur.
Pourtant la requête comme ci ne fonctionne pas. Il me dit nombre de paramètre insuffisant.

Ne faite pas attention à la requête c'est juste un exemple.

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
19
20
21
22
23
24
$sql = $db->prepare('
	SELECT mission_id, mission_name, complete_normal, complete_hard
	FROM missions INNER JOIN complete
	ON (mission_campaign = complete_campaign)
	AND (mission_id = complete_mission)
	WHERE mission_campaign = :campaign
	AND complete_member = :member
	UNION
	SELECT mission_id, mission_name, 0, 0
	FROM missions
	WHERE mission_campaign = :campaign
	AND mission_id NOT IN
	(SELECT mission_id
	FROM missions INNER JOIN complete
	ON (mission_campaign = complete_campaign)
	AND (mission_id = complete_mission)
	WHERE mission_campaign = :campaign
	AND complete_member = :member)
');

$sql->execute(array(
	':campaign' => 1,
	':member' => $_SESSION['member_id'],
));

Si je met des nom différent pour chaque fois que :campaign apparait ca passe.

Est ce qu'il faut utiliser autre chose que execute() pour pouvoir laisser :campaign 3 fois ?

C'est assez nul en tout cas de pas pouvoir faire ca.