簡體   English   中英

從聯接表獲取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM