2016-06-08 5 views
0

제 생각에는 게시물이있는 테이블이 있습니다. 각 게시물에는 카테고리 ID가 있지만 카테고리 이름은 없습니다. 카테고리 ID가있는 다른 테이블이 카테고리 이름과 함께 있습니다. 그래서 내가 게시물을 통해 반복하고 카테고리 이름을 반향 싶어요. 나는 while 루프 안에 또 다른 mysqli 쿼리를 넣을 것이라고 생각하고 있었다.mysqli를 이해하려고하면 하나의 열을 키로하고 하나의 열을 값으로 배열이 필요합니다.

while($row_post = mysqli_fetch_array($result_post)){ 

query_post_cat = "SELECT category_name FROM categories WHERE category_id = " . $row_post["category_id"]; 
result_post_cat = mysqli_query($link, $query_post_cat); 
$category_name = something here not sure 

echo $row_post["post_title"] . $category_name; 
} 

거기서 갈 곳을 알아낼 수 없다. 내가 생각하는 또 다른 방법은 while 루프 외부의 범주 테이블을 어떻게 든 값으로 키와 고양이 이름 고양이 ID를 가진 ASSOC 배열을 그냥 while 루프에서

category_name[$row_post["category_id"]] 

등을 반향하는 것입니다.

mysqli를 사용하는 방식이 이상하지 않다는 것을 확실히 알았습니다. 다른 사람들의 코드를 볼 때 -> 객체 연산자가 많이 사용 된 것 같습니다. 어떻게 작동하고 그것에 대한 정보를 찾을 수 없습니다. 당신이 조인과 쿼리를 실행할 경우

도와 주셔서 감사합니다

+0

1) 변수 이름에 $가 누락되었습니다. 2) ** $ row mysqli_fetch_row ($ result_post_cat) ** 동안 작성해야합니다. –

+0

** 경고 ** : mysqli를 사용할 때 [매개 변수화 된 쿼리] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)와 ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php)를 사용하여 사용자 데이터를 쿼리에 추가하십시오. ** 심각한 [SQL injection bug] (http://bobby-tables.com/)를 만들었 기 때문에 문자열 보간이나 연결을 사용하여 **이를 수행하지 마십시오. **'$ _POST' 나'$ _GET' 데이터를 질의에 직접 입력하지 마십시오. 실수로 누군가를 착취하려한다면 매우 해로울 수 있습니다. – tadman

+0

'while 루프 안에 또 다른 mysqli 쿼리를 넣을 것입니다 .' 좋은 생각은 절대적이지 않습니다. –

답변

2

을 볼 수 그래서 꽤 같이, 한 번에 두 테이블에서 데이터를 얻을 수 잃었어요 :

SELECT post_table.*, categories.category_name FROM post_table INNER JOIN categories ON post_table.category_id = categories.category_id; 

당신은이에 더 찾아 볼 수 있습니다 : http://www.w3schools.com/sql/sql_join.asp

0

코드는 다음과 같이해야한다 : -

while($row_post = mysqli_fetch_array($result_post)){ 
    // missed $ below line 
    $query_post_cat = "SELECT category_name FROM categories WHERE category_id = {$row_post['category_id']}"; 
    $result_post_cat = mysqli_query($link, $query_post_cat); 
    // use mysqli_fetch_row below 
    $category_name = mysqli_fetch_row($result_post_cat)); 

    echo $row_post["post_title"] . $category_name; 
} 

쿼리에서 mysql JOIN을 사용하여 단일 레코드에서 원하는 레코드를 얻는 것이 더 좋습니다.

관련 문제