2011-04-03 49 views
0

試圖從評論表中拉字段的'信息'和'日期'。拉字段錯誤 - Php/Sql

兩個表: professor Comment

<?php 
$pID2 = filter_input(INPUT_GET, 'pID', FILTER_SANITIZE_NUMBER_INT); 
     $username = "###"; 
     $password = "####"; 
     $pdo2 = new PDO('mysql:host=localhost;dbname=###', $username, $password); 
     $pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $sth2 = $pdo2->prepare(' 
      SELECT info, date 
      FROM Professor, Comment 
      WHERE Professor.pID = ?'); 
     $sth2->execute(array(
      $pID2 
     )); 
?> 

雖然聲明

while($row = $sth2->fetch(PDO::FETCH_ASSOC)) { 
       echo "<div class='comment'>by Anonymous on {$row['date']}: <br> {$row['info']} </div>"; 
       } 

的問題是,它會得出結果,但它顯示了所有教授的這兩個相同的評論。有沒有錯誤在這裏沒有調用一個獨特的教授給予pID=[somenumber]在url?

回答

1

實際的SQL代碼應該是: -

$sth2 = $pdo2->prepare(' 
      SELECT info, date 
      FROM Comment 
      JOIN Professor ON Professor.pID = Comment.pID 
      WHERE Comment.pID = ?'); 

你需要把一個JOIN statementProfessor表。

希望它有幫助。

更新: -
應該已經提供的另一個檢查(如在評論提到由OP)。如果沒有找到行,那麼row count檢查應作爲: -

if ($sth2->rowCount()) { 
    while($row = $sth2->fetch(PDO::FETCH_ASSOC)) { 
    echo "<div class='comment'>by Anonymous on {$row['date']}: <br> {$row['info']} </div>"; 
    } 
} 
else { 
    echo "<div class='unavailable'>No Comments Found!</div>"; 
} 

這是一件好事,有這種行數的檢查。 比編碼錯誤更好地檢查。運氣最好!

+0

這很好,但是,如果沒有找到結果,有沒有簡單的方法可以發出信息? – Jshee 2011-04-03 23:34:32

+0

知識 - 令人驚歎。謝謝! – Jshee 2011-04-04 00:08:06

+0

@woopie - 乾杯! – 2011-04-04 07:15:13