Ответ 1
customers.id
переписывает order.id
, потому что вы используете одно и то же имя столбца.
select *
from `order`
left join customer on (customer.id = order.fk_cid)
where date = curdate() order by time desc limit 1;
+------+--------+------------+----------+------+-------+------
| id | fk_cid | date | time | id | name | ....
+------+--------+------------+----------+------+-------+------
| 1 | 2 | 2011-11-30 | 07:01:23 | 2 | asasd | ....
+------+--------+------------+----------+------+-------+------
1 row in set (0.03 sec)
Как вы можете видеть в этом примере, у вас есть два id
, поэтому PHP при извлечении данных с помощью mysql_fetch_assoc
он перезаписывает второй id
, потому что он тот же ключ в массиве. Чтобы исправить это, вам нужно будет указать столбцы в запросе:
select `order`.id AS order_id, customer.id AS customer_id, customer.name /* etc... */
Это выведет:
Кроме того, я рекомендую использовать другое имя для ваших таблиц и полей. order
, date
, time
, так как они зарезервированы для слова (если вы забыли использовать `).
Array
(
[order_id] => 1
[customer_id] => 2
// etc...
)
Также здесь вы должны прочитать следующую тему: Почему SELECT * считается вредным?