Привет, я работаю над некоторым кодом с mysql и должен отображать результаты 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- > что-то покажет результаты... Просто не получишь это прямо сейчас...
Вам нужно указать явное имя или псевдоним для вашего поля в запросе mysql - когда вы применяете функции к столбцу, тогда неясно, каким будет имя столбца.
Попробуйте следующее:
//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)
Да, это нормально, но я использую фреймворк Codeigniter. Я работал с
$query->first_row() as $show
Затем просто echo $show
и результаты будут отображаться без необходимости знать имя строки..