2016-12-18 3 views
0

CDIDにアクセスしてクエリに設定し、後でGETを使用して次のページで取得しようとしています。内部結合の未定義インデックス

私は、彼らが同じ値であるとしてINNER JOIN cdreview ON cdreview.CDID=cd.CDIDはCDIDを組み合わせだろう、と、私はちょうど$cdid = $row['CDID'];としてクエリでそれを設定することにより、値にアクセスすることができましたが、私はUndefined index: CDIDエラーメッセージが出続けるという印象の下に常にでした。

私はnoobだから、どんな助けにも感謝します。

<?php 

    require_once 'database_conn.php'; 

    $userid = $_SESSION['userSession'];  

$sql = "SELECT cdreview.reviewDate, cdreview.reviewText, cd.CDTitle FROM cd 
INNER JOIN cdreview ON cdreview.CDID=cd.CDID AND cdreview.userID='$userid' ORDER BY cdreview.reviewDate;" or die;  


$result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); 

    if (mysqli_num_rows($result) > 0) {     

    while ($row = mysqli_fetch_assoc($result)){  

    $date = $row['reviewDate']; 
    $album = $row['CDTitle']; 
    $review = $row['reviewText']; 
    $cdid = $row['CDID']; 

      echo"<table align='center'> 
      <tr align='center'> 
       <td colspan='5'> 
        <h2>View All Reviews</h2> 
       </td> 
      </tr> 

      <tr align='center'> 
       <th>Date</th> 
       <th>Album</th> 
       <th>Reviews</th> 
       <th>Edit Review</th> 
       <th>Delete Review</th> 
      </tr> 

      <tr align='center'> 
        <td>$date</td> 
        <td>$album</td> 
        <td>$review</td> 
        <td><a href=\"album_reviews.php?id=$cdid\"></a></td> 
        <td><a href=\"review.php?id=$cdid\"></a></td> 
       </tr> 
      </table>"; 
    } 
} else { 
    echo "<script>alert('You have not left any reviews!')</script>";  
      echo "<script>window.open('home.php', '_self')</script>"; 
} 
mysqli_close($conn); 
?> 
+0

PHPMyAdminのようなクエリを試してみましたか?したがって、コードでテストする前にクエリのトラブルシューティングを行うことができます。 –

+0

いくつかの情報を追加するには(参考のため、@scaisEdgeの回答を読んでください):値を取得するためには、クエリのフィールドを明示的に要求する必要があります。選択しないと、その価値を獲得する。 –

答えて

4

あなたは

$date = $row['reviewDate']; 
    $album = $row['CDTitle']; 
    $review = $row['reviewText']; 
    $cdid = $row['CDID']; 

を選択しない値を取得しようとしているが、あなたは

あなたの選択でCDID列を持っていないだけで

SELECT cdreview.reviewDate, cdreview.reviewText, cd.CDTitle from 

を選択

0

CDID列を次のいずれかを使用してselect文に追加する必要があります。

$sql = "SELECT cd.CDID, cdreview.reviewDate, cdreview.reviewText, cd.CDTitle FROM cd [...];" 

または使用:

$sql = "SELECT * FROM cd [...];" 

あなたのアイデアは、あなたがCDID列に参加するときに、その列はSELECTのために利用可能であり、両方のテーブルから同じ値を持っていることが正しいです。しかし、それは自動的には選択されません - あなたがそれを検索したい場合、あなたはまだそれを選択する必要があります。

JOINまたは他のステートメントで使用される属性がSELECTに追加される暗黙のSELECTのようなものはありません。 SELECT文は、指定したものだけを検索し、それ以上は何も検索しません。