2009-11-25 136 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