2015-06-26 3 views
1

Я пытаюсь вытащить данные из моей базы данных, которые AHS следующие:Получить данные из таблицы объединения

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_id с doc_id, который все работает нормально. Я привязываю, чтобы вытащить это из таблиц и показать его, вот мой подход до сих пор, но ничего не получается, и мне интересно, где мои недостатки, поскольку я не получаю ошибок?

, когда я захожу на страницу cateroy в моем сценарии я получить идентификатор из URL:

$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>';   
} 

по какой-то странной причине я не получаю ничего, если я делаю 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' " 

Так он получает правильный идентификатор категории Я в

Сейчас я получаю й следующий вывод:.

Couldn't execute query: Unknown column 'cats.cat_id' in 'on clause' 
+1

Откуда берется '$ r'? Вы называете 'mysqli_query'? Если это так, вы получаете какой-либо результат от 'mysqli_error'? – Jim

+0

Я только что понял, что я обновлю свой код извините. – PhpDude

+0

У вас есть дополнительный '}' в конце без соответствия '{' – Barmar

ответ

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'; 

Примечание: Если нет, то показать, что выход вам требуется.

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>';   
} 

Ваш запрос неверен Я думаю.

+0

вы присоединяетесь к docs tbl и doc_cat_join .., поэтому вы должны использовать doc_id вместо cat_id. –

+0

Итак, теперь больше нет ошибок, но нет данных на этот раз? – PhpDude

+0

Почему вы используете подстановочный знак в разделе where? –

Смежные вопросы