[英]Get data from a join table
我正在嘗試從數據庫中提取數據,包括以下內容:
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
我插入了一些數據,以便在cats中有一行,在docs中有一行,並且在聯接表中將cat_id與doc_id綁定在一起,都可以正常工作。 我想把它從表中拉出來並顯示出來,到目前為止,這是我的方法,但是什么也沒得到,我想知道我的失敗在哪里,因為我沒有錯誤?
當我在腳本中訪問Cateroy頁面時,我從URL獲取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'
$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>';
}
我認為您的查詢是錯誤的。
根據您的輸入和查詢設計,您的查詢應符合以下條件-
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';
注意:如果未顯示,則顯示您需要的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.