我正在尝试从我的数据库中提取数据,其中包含以下内容:
x3表:
docs
doc_id - index
cat
cat_id - index
doc_cat_join
doc_id - foreign key to docs/doc_id
cat_id - foreign key to cats/cat_id
我已经插入了一些数据,因此我在cat中有一行,docs和连接表中的行绑定了一个带有doc_id的cat_id,这一切都正常。我想把它从表中拉出并显示出来,到目前为止这是我的方法,但没有得到任何结果,我想知道我的失败在哪里,因为我没有错误?
当我在脚本中访问cateroy页面时,我从网址获取了id:
$id = $_GET['cat_id'];
$q = sprintf("
SELECT
docs.doc_id,doc_name
FROM docs
INNER JOIN doc_cat_join
ON cats.cat_id = doc_cat_join.cat_id
WHERE doc_cat_join.doc_id = '%s'
",
mysqli_real_escape_string($dbc, $id) );
$r = mysqli_query($dbc,$q)
or die ("Couldn't execute query: ".mysqli_error($dbc));
// FETCH AND PRINT ALL THE RECORDS
echo '<div class="view_body">';
while ($row = mysqli_fetch_array($r)) {
echo '<a href="doc_view.php?doc_id='.$row["doc_id"].'"> '.$row["doc_name"]. '</a><br>';
}
echo '</div>';
}
由于某些奇怪的原因我什么都没得到,如果我在$ r上做var_dump我会得到以下结果:
string(168) " SELECT docs.doc_id,doc_name FROM docs INNER JOIN doc_cat_join ON cats.cat_id = doc_cat_join.cat_id WHERE doc_cat_join.doc_id = '24' "
因此它获得了我所在的正确类别ID。
我现在得到以下输出:
Couldn't execute query: Unknown column 'cats.cat_id' in 'on clause'
答案 0 :(得分:1)
$id = $_GET['cat_id'];
$q = sprintf("
SELECT
*
FROM docs
INNER JOIN doc_cat_join
ON docs.doc_id = doc_cat_join.doc_id
INNER JOIN cat
ON doc_cat_join.cat_id = cat.cat_id
WHERE doc_cat_join.cat_id = '$id'
",
mysqli_real_escape_string($dbc, $id) );
print_r ($q);
// FETCH AND PRINT ALL THE RECORDS
echo '<div class="view_body">';
while ($row = mysqli_fetch_array($r)) {
echo '<a href="doc_view.php?doc_id='.$row["doc_id"].'"> '.$row["doc_name"]. '</a><br>';
}
echo '</div>';
}
我认为你的查询错了。
答案 1 :(得分:1)
根据您的输入和查询设计,您的查询应如下所示 -
SELECT d.doc_id, d.doc_name
FROM docs AS d
INNER JOIN doc_cat_join AS dc ON dc.doc_id = d.doc_id WHERE dc.cat_id = '24';
注意:如果不是,则显示您需要的输出。