Как осталось объединить две таблицы MySQL - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть три таблицы в базе данных

Категория: id, категория

Подкатегория: идентификатор, категория (category.id), подкатегория

Продукт: id, p_name, страна, категория (category.id), подкатегория (sub_category.id)

при выполнении этого запроса подкатегория пуста, но при удалении LEFT JOIN cat ON product.category = cat.id категория пуста и подкатегория заполняется правильно

на моем xamp localhost он работает правильно, но когда я загружаю его на сервер, появляется ошибка выше

SELECT * FROM product 
LEFT JOIN subcat ON product.sub_category = subcat.id 
LEFT JOIN cat ON product.category = cat.id 
WHERE product.id = $id


array(1) {
  [0]=>
  array(16) {
    ["id"]=>
    string(1) "1"
    ["p_name"]=>
    string(80) "Agusha snak"
    ["country"]=>
    string(24) "croatia"
    ["category"]=>
    string(37) "baby feed"
    ["sub_category"]=>
    string(0) ""
  }
}

1 Ответ

0 голосов
/ 26 апреля 2018

Проблема в том, что у вас есть дубликаты имен столбцов в таблицах. Ассоциативный массив, возвращаемый fetch(), будет содержать только последний столбец с тем же именем.

Используйте псевдонимы, чтобы различать их.

SELECT p.*, c.category AS category_name, s.sub_category AS subcategory_name
FROM product AS p
LEFT JOIN subcat AS s ON p.sub_category = s.id 
LEFT JOIN cat AS c ON p.category = c.id 
WHERE p.id = $id

Кроме того, вы не должны подставлять переменные в запрос, использовать подготовленный оператор и bindParam() для защиты от SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...