我有一个返回项目详细信息的查询。它属于某一类别;因此我将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;
?>
这里可能缺少什么?
答案 0 :(得分:1)
您的绑定顺序错误,应该是:
$stmt->bind_result($category, $id, $name, $description);
您在SELECT子句中的顺序很重要,因此bind_result
可以确定哪个列与变量绑定。
答案 1 :(得分:0)
您似乎将3个项目(从您的选择中)提取到4个变量,我认为这不是很好。
答案 2 :(得分:0)
这是我的元素之外的方法,但没有人回答它,所以我想我会开枪。
是否因为您在查询中选择了3个项目...类别,ID,描述
然后,当您绑定变量时,您将绑定4 ... $ id,$ category,$ name,$ description
所以也许正在发生的事情是变量$ id实际上是类别,而$ category实际上是id(这就是你所看到的)