Bonjour,

Je suis en train de passer un site plateforme de mysql à PDO avec plus de 1000 requêtes à la base de données.

Ce site utilise pas mal de requêtes multitables dans lesquelles deux tables peuvent posséder des champs avec des noms identiques.
Ayez aussi à l'idée, que ces requêtes multitables peuvent, dans certain cas, faire appel plusieurs fois à la même table, et donc avec des noms de données forcément identiques.

Voila comment on s'en sortait avec mysql sur une requête faisant appel à 2 fois la même table :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
$requete = "SELECT t1.data, t2.data FROM table t1";
$requete = $requete . "LEFT JOIN table t2 ON t2.id2=t1.id1 WHERE  ...";
$resultat = mysql_query($requette)
$num_rows = mysql_num_rows($resultat)
Pour accéder aux données on faisait par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
for($row=0;$row<$num_rows;$row++) {
data1 = mysql_result($resultat,$row,'t1.data');
data2 = mysql_result($resultat,$row,'t2.data');
}
Avec PDO, j'ai voulu retranscrire cette requette avec des fetch(). pour accéder aux données, j'avais pensé faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$resultat = $bdd->query($requette)
while($row=$resultat->fetch()) {
$data1 = $row['t1.data']
$data2 = $row['t2.data']
}
Mais PDO me refuse l'écriture t1.data et ne reconnait pas les data concernées

Alors faut il que l'utilisation de PDO nous force à intervenir dans les requettes sql ?

En faisant par exemple

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
$requete = "SELECT t1.data as data1, t2.data as data2 from table1 t1";
$requete = $requete . "LEFT JOIN table2 t2 ON t2.id=t1.id WHERE  t1.id = NB";
$resultat = $bdd->query($requete)
while($row=$resultat->fetch()) {
$data1 = $row['data1']
$data2 = $row['data2']
}
Merci de vos réponses éclairées

Zakuli