2009-11-25 6 views
0

Salut je travaille sur un code avec MySQL et doivent afficher les résultats de mysql avec php ..PHP MySql résultats

MySQL 
select distinct(year(Cataloged_Date)) from records; 

+------------------------+ 
| (year(Cataloged_Date)) | 
+------------------------+ 
|     2009 | 
+------------------------+ 
1 row in set (0.00 sec) 


PHP 

foreach($query->result() as $show){ 
       $data[$i] = $show->Cataloged_Date; 
       $i++; 
      } 

J'utilise CodeIgniter pour le php. L'utilisation de $ show-> Cataloged_Date ne renverra rien. Je pense son de $ show> quelque chose à afficher les résultats ... juste ne peux pas obtenir dès maintenant ...

Répondre

2

Vous devez fournir un nom explicite ou alias pour votre champ dans la requête mysql - lorsque vous appliquez fonctions à une colonne, alors ce n'est pas évident ce que le nom de la colonne sera.

-1

Oui, c'est normalement vrai, mais j'utilise le framework php Codeigniter. Je l'ai fait le faire fonctionner avec

$query->first_row() as $show 

Ensuite, il suffit echo $show et les résultats affichera sans vous avoir besoin de connaître le nom des lignes ..

+1

Eh bien, qui n'a pas beaucoup à faire avec le cadre CodeIgniter - on peut facilement éviter les noms de colonnes en php vanille aussi. Cependant, étant donné votre exemple de code $ show-> Cataloged_Date, la raison que j'ai donnée est la bonne raison. – BrynJ

1

Essayez ceci:

//on MySQL 
select distinct(year(Cataloged_Date)) as "Cat_Date" from records; 

<?php 
    foreach($query->result() as $show){ 
    $data[$i] = $show->Cat_Date; 
    $i++; 
    } 
?> 

Vous pouvez appliquer un alias à toute "valeur" sur votre sélection, que ce soit un nom de colonne ou le résultat d'une fonction.
Il suffit de faire

SELECT something AS YourAlias ... 

Pour vous donner un exemple clair:

mysql> select 1; 
+---+ 
| 1 | 
+---+ 
| 1 | 
+---+ 
1 row in set (0.00 sec) 

#A simple value can be given an alias 
mysql> select 1 as "Number"; 
+--------+ 
| Number | 
+--------+ 
|  1 | 
+--------+ 
1 row in set (0.00 sec) 

mysql> select max(val) from my_values; 
+----------+ 
| max(val) | 
+----------+ 
|  4 | 
+----------+ 
1 row in set (0.00 sec) 

#A function 
mysql> select max(val) as "max_val" from my_values; 
+---------+ 
| max_val | 
+---------+ 
|  4 | 
+---------+ 
1 row in set (0.00 sec) 

#or even a plain column 
mysql> select val as "lav" from my_values; 
+------+ 
| lav | 
+------+ 
| 1 | 
| 2 | 
| 3 | 
| 4 | 
+------+ 
4 rows in set (0.00 sec) 
+0

Cela a fonctionné absolument ... Merci un moulin .... –

+0

De rien! Assurez-vous de donner des réponses positives à ces réponses qui vous ont aidé ainsi que de choisir l'une d'entre elles comme votre «réponse acceptée». –

Questions connexes