2009-11-25 2 views
0

Привет Я работаю на некоторый код с MySQL и нужно отобразить результаты MySQL с PHP ..MySql PHP результаты

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

Я использую CodeIgniter для PHP. Использование $ show-> Cataloged_Date не вернет noting. Я думаю, что его $ show-> что-то показать результаты ... Просто не получится прямо сейчас ...

ответ

2

Необходимо указать явное имя или псевдоним для вашего поля в запросе mysql - при применении функции для столбца, тогда неочевидно, каким будет имя столбца.

-1

Да, это нормально, но я использую фреймворк Codeigniter. Я получил это работает с

$query->first_row() as $show 

Тогда просто echo $show и результаты будут отображаться без необходимости знать имя строк ..

+1

Ну, что не имеет много общего с CodeIgniter рамки - можно легко избежать имен столбцов в ванили PHP тоже. Однако, учитывая ваш пример кода $ show-> Cataloged_Date, причина, по которой я дал, является правильной причиной. – BrynJ

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

Это абсолютно сработало ... Спасибо, мельница .... –

+0

Добро пожаловать! Просто убедитесь, что вы отдаете ответы на те ответы, которые помогли вам, а также выберите один из них в качестве вашего «принятого ответа». –

Смежные вопросы