2009-11-25 160 views
0

嗨,我工作的一些代碼與MySQL和需要用PHP顯示MySQL的結果..PHP MySQL的結果

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++; 
      } 

我用笨的PHP。使用$ show-> Cataloged_Date不會返回任何值。我在想它的$ show->東西來顯示結果...只是不能立刻得到它...

回答

2

你需要在你的字段在mysql查詢中提供一個明確的名稱或別名 - 當你申請函數添加到列中,那麼列名稱將是什麼並不明顯。

-1

是的,這通常是正確的,但我使用Codeigniter php框架。我沒有得到它與

$query->first_row() as $show 

然後,只需echo $show工作,其結果將顯示,沒有你需要知道的行名..

+1

好了,沒有很多工作要做,使用CodeIgniter框架 - 我們可以很容易地避免香草PHP列名了。但是,考慮到你的代碼示例$ show-> Cataloged_Date,我給出的原因是正確的原因。 – BrynJ 2009-11-25 22:54:26

1

試試這個:

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

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

你可以申請一個別名到您選擇的任何「值」,無論是列名還是函數的結果。
只是做

SELECT something AS YourAlias ... 

爲了給你一個明顯的例子:

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

絕對奏效......感謝一家工廠...... – 2009-11-29 00:12:35

+0

不客氣!只要確保你給予那些幫助你的答案,並選擇其中一個作爲你的「接受答案」。 – 2009-11-29 19:36:43