Bonjour,

Il y a une requête mysql qui marche bien, mais j'aimerais bien la changer en PDO.

Voici la requête qui marche :
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
$sql = <<<EOF
	SELECT  
		YEAR(`DTHR_VENTE`) AS ANNEE,
		COUNT(ID) AS NBR_VENTES  
	FROM `jp_graph_ventes`
	GROUP BY YEAR(`DTHR_VENTE`)
EOF;
 
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('erreur de connxion');
 
@mysql_select_db(MYSQL_DATABASE) or die('pas bon BDD');
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('erreur de requête');
 
 
while ($row = mysql_fetch_array($mysqlQuery,  MYSQL_ASSOC)) {
	$tableauAnnees_00[] = 'Année ' . $row['ANNEE'];
	$tableauNombreVentes_00[] = $row['NBR_VENTES'];
}
 
 
var_dump($tableauAnnees_00);
echo '<p></p>';
die(var_dump($tableauNombreVentes_00));
et voici je ce que j'obtiens :
array (size=3)
0 => string 'Année 2004' (length=10)
1 => string 'Année 2005' (length=10)
2 => string 'Année 2006' (length=10)
array (size=3)
0 => string '7' (length=1)
1 => string '34' (length=2)
2 => string '68' (length=2)

alors j'ai changé le code pour avoir une requête PDO :
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
/*
							$sql = <<<EOF
								SELECT  
									YEAR(`DTHR_VENTE`) AS ANNEE,
									COUNT(ID) AS NBR_VENTES  
								FROM `jp_graph_ventes`
								GROUP BY YEAR(`DTHR_VENTE`)
							EOF;
 
							$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('erreur de connxion');
*/
try
{
	$bdd = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
        die('Erreur nconnection mysql : ' . $e->getMessage());
}
 
/*
					@mysql_select_db(MYSQL_DATABASE) or die('pas bon BDD');
					$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('erreur de requête');
*/
$req = $bdd->prepare('SELECT YEAR (' . $champ_date . ') AS ANNEE, 
					  COUNT (' . $champ_id . ') AS NBR_VENTES  
					  FROM '. $tableData . ' 
					  GROUP BY YEAR (' . $champ_date . ')');
 
/*
						while ($row = mysql_fetch_array($mysqlQuery,  MYSQL_ASSOC)) {
						$tableauAnnees_00[] = 'Année ' . $row['ANNEE'];
						$tableauNombreVentes_00[] = $row['NBR_VENTES'];
						}
*/
 
//while ($donnees = $req->fetch())
while ($donnees = $req->fetch(PDO::FETCH_ASSOC))
//while ($donnees = $req->fetchAll())
//while ($donnees = $req->fetch(PDO::FETCH_BOTH))
//while ($donnees = $req->fetch(PDO::FETCH_LAZY))
//while ($donnees = $req->fetch(PDO::FETCH_OBJ))
	{
		$tableauAnnees_00[] = 'Année ' . $donnees['par_annee'];
		$tableauNombreVentes_00[] = $row['combien'];
	}
 
var_dump($tableauAnnees_00);
echo '<p></p>';
die(var_dump($tableauNombreVentes_00));
 
$req->closeCursor();
mais j'ai obtiens :
array (size=0)
empty
array (size=0)
empty

Donc je me demande si mon "fetch(PDO::FETCH_ASSOC))" n'est pas bon ?
while ($donnees = $req->fetch(PDO::FETCH_ASSOC))

Est-ce que vous pouvez m'aider ?

merci