Получение названия категории с помощью ВНУТРЕННЕГО СОЕДИНЕНИЯ

У меня есть запрос, который возвращает детали элемента. Это товар относится к определенной категории; поэтому я связал таблицу ITEMS с таблицей CATEGORIES, сохранив внешний ключ в таблице ITEMS.

Теперь я хочу, чтобы в подробностях любого выбранного элемента также отображалось имя категории вместо внешнего ключа. Я попробовал INNER JOIN следующим образом, но на удивление все же запрос отображает внешний ключ.

Вот мой запрос:

/* Create the prepared statement */
if ($stmt = $mysqli->prepare("SELECT categories.category AS category, 
                                     items.id, 
                                     items.name, 
                                     items.description 
                              FROM items
                              INNER JOIN categories
                                    ON categories.cat_id = items.cat_id
                              WHERE items.id='$id'")) { 

    /* Execute the prepared Statement */
    $stmt->execute();

    /* Bind results to variables */
    $stmt->bind_result($id,$category,$name,$description);

    /* fetch values */
    while ($rows = $stmt->fetch()) {
        ...
    }
...
}

Выход для названия категории:

<?php  
echo $category;
?>

Чего здесь не хватает?

3 ответа

Решение

Это выход из моей стихии, но никто еще не ответил на это, поэтому я решил, что сделаю снимок.

Это потому, что вы выбираете 3 элемента в своем запросе... категория, идентификатор, описание

Затем, когда вы связываете переменные, вы связываете 4... $id, $category, $name, $description

Поэтому, возможно, переменная $ id на самом деле является категорией, а $ category - фактически идентификатором (именно это вы и видите).

Ваш обязательный порядок неверен, он должен быть:

$stmt->bind_result($category, $id, $name, $description);

Ваш заказ в предложении SELECT имеет значение, поэтому bind_result может выяснить, какой столбец связывается с переменной.

Вы, кажется, выбираете 3 элемента (из вашего выбора) для 4 переменных, я не думаю, что это хорошо.

Другие вопросы по тегам