Также следует помнить, что fetch_assoc()
может не возвращать каждый ожидаемый столбец. Если 2 выходных столбца будут иметь одно и то же имя, только последний экземпляр этого столбца будет извлечен fetch_assoc()
. Например, следующий запрос:
SELECT * FROM orders LEFT JOIN line_items ON orders.id = line_items.order_id
Предполагая, что в обеих таблицах есть столбец с именем id
, результирующий ассоциативный массив будет иметь ключ с именем id
, значение которого установлено на line_items.id
, и вы не сможете получить orders.id
из результата!
Вы можете обойти эту проблему с повторяющимися именами столбцов и продолжать использовать fetch_assoc()
, вручную создав псевдонимы столбцов SELECT
, предоставив каждому столбцу уникальный псевдоним:
SELECT
o.id AS order_id, #unique alias
i.id AS line_item_id, #unique alias
o.date,
i.qty,
i.price
FROM orders o
LEFT JOIN line_items i ON i.order_id = o.id
Или вы можете переключиться на использование fetch_array()
, что позволит вам получить доступ либо к id
по индексу, а не по клавише