0

我有一个返回项目详细信息的查询。它属于某个类别;因此,我已将 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;
?>

这里可能缺少什么?

4

3 回答 3

1

您的绑定顺序错误,应该是:

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

您在 SELECT 子句中的顺序很重要,因此bind_result可以找出哪个列绑定到哪个变量。

于 2013-03-26T16:31:20.310 回答
0

这超出了我的范围,但还没有人回答,所以我想我会试一试。

是因为您在查询中选择了 3 个项目...类别、ID、描述

然后,当您绑定变量时,您将绑定 4... $id, $category, $name, $description

所以也许正在发生的事情是变量 $id 实际上是类别,而 $category 实际上是 id (这就是你所看到的)

于 2013-03-26T16:32:35.827 回答
0

您似乎将 3 个项目(从您的选择中)提取到 4 个变量,我认为这不好。

于 2013-03-26T16:30:37.193 回答