Bonjour, j'ai ce code mais il n'y a que le update qui fonctionne et non le insert qui me retourne un false lorsque c'est une nouvelle adresse:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public function save(DDPC\Adresse $contact) {
		$data = [
				':numero_voie' => $contact->numero_voie,
				':type_voie' => $contact->type_voie,
				':voie' => $contact->voie,
				':complement_adresse_1' => $contact->complement_adresse_1,
				':complement_adresse_2' => $contact->complement_adresse_2,
				':service_distribution' => $contact->service_distribution,
				':adresse_internationale' => $contact->adresse_internationale,
				':code_postal' => $contact->code_postal,
				':ville_postal' => $contact->ville_postal,
				':cedex' => $contact->cedex,
				':pays' => $contact->pays,
				':longitude' => $contact->longitude,
				':latitude' => $contact->latitude,
				':id_commune' => $contact->id_commune
		];
 
		if ($contact->id_adresse === null) {
			$query =  "
				INSERT INTO
					adresse
				SET
					adresse.numero_voie = :numero_voie,
					adresse.type_voie = :type_voie,
					adresse.voie = :voie,
					adresse.complement_adresse_1 = :complement_adresse_1,
					adresse.complement_adresse_2 = :complement_adresse_2,
					adresse.service_distribution = :service_distribution,
					adresse.adresse_internationale = :adresse_internationale,
					adresse.code_postal = :code_postal,
					adresse.ville_postal = :ville_postal,
					adresse.cedex = :cedex,
					adresse.pays = :pays,
					adresse.longitude = :longitude,
					adresse.latitude = :latitude,
					adresse.id_commune = :id_commune
 
			";
 
			$stmt = $this->dbh->prepare ($query);
// 				exit(var_dump( $stmt, $data ));
			if ($stmt->execute ( $data ))
			{
				return $this->dbh->lastInsertId ();	
			}
		} 
		else 
		{
			$data [':id_adresse'] = $contact->id_adresse;
 
			$stmt = $this->dbh->prepare ( "
				UPDATE
					adresse
				SET
					adresse.numero_voie = :numero_voie,
					adresse.type_voie = :type_voie,
					adresse.voie = :voie,
					adresse.complement_adresse_1 = :complement_adresse_1,
					adresse.complement_adresse_2 = :complement_adresse_2,
					adresse.service_distribution = :service_distribution,
					adresse.adresse_internationale = :adresse_internationale,
					adresse.code_postal = :code_postal,
					adresse.ville_postal = :ville_postal,
					adresse.cedex = :cedex,
					adresse.pays = :pays,
					adresse.longitude = :longitude,
					adresse.latitude = :latitude,
					adresse.id_commune = :id_commune
 
				WHERE
					adresse.id_adresse = :id_adresse
			" );
 
			if ($stmt->execute ( $data ))
				return $contact->id_adresse;
		}
		return false;
	}
En fait, le but c'est que si mon contact a déjà une adresse on récupère son id_adresse et on effectue les modifications, dans le cas contraire, on lui ajoute une adresse.

J'ai effectué un var_dump de $data et il prend bien en compte les champs remplis, le problème vient vraiment de mon execute() puisqu'il ne veut pas s'exécuter.

Merci de m'aider, je peine, ça fait deux jours, sur le même problème.