2011-11-14 127 views
0

我遇到了PHP問題。我想讓下面的代碼只顯示數據庫中的一個結果 - 與siteID字段匹配的結果。但是它將返回數據庫中的所有結果。PHP/MySQL結果重複

<?php      
$siteID = $_GET['siteID']; 
include 'connect.php';      
$sql = "SELECT id, siteID,name,description,skills,extra1,extra2 FROM folio"; 
$queryresult = mysql_query($sql) or die(mysql_error()); 

while ($row = mysql_fetch_assoc($queryresult)) { 
$id = $row['id']; 
$siteID = $row['siteID']; 
$name = $row['name']; 
$description = $row['description']; 
$skills = $row['skills']; 
$extra1 = $row['extra1']; 
$extra2 = $row['extra2']; 

echo "<div id='title'>  
<h5>$name</h5> 
</div> 

<div id='holder'> 
    <div id='blogleft'> 
</div> 

<div id='blogright'> 
    <p>Archive/Calendar<br /><br /> Add some sort of calendar or archive here; for previous blog posts.</p> 
</div> 
</div>"; 
} 
?> 

URL以「/work.php?siteID=pluggedin

回答

1

您需要一個WHERE子句。

$sql = "SELECT id, siteID, name, description, skills, extra1, extra2 FROM folio WHERE siteID='".$siteID."'"; 

雖然我不推薦這樣。如果你不知道我在說什麼,查找SQL注入。我會做一個PDO聲明。

事情是這樣的:

$sql = "SELECT * FROM folio WHERE siteID=:siteid"; 
$sth = $dbh->prepare($sql); 
$sth->bindParam(':siteid', $siteid, PDO::PARAM_STR); 
$sth->execute(); 
$result = $sth->fetchAll(); 
print_r($result); 

你也可以這樣做:

$result = $sth->fetch(PDO::FETCH_ASSOC); 

,讓你與列名,類似mysql_fetch_assoc數組,這將檢索下一行,同樣類似於mysql_fetch_assoc。

+0

謝謝,我會期待它。 – user1039878

+0

@ user1039878我更新了我的答案,並提供了最有可能找到的答案。 – Matt

+0

歡呼馬特,感謝幫助。 – user1039878

-1

那是因爲你在你的選擇表中所有的記錄...添加LIMIT clause到查詢結束

0

你沒有使用任何地方條件的查詢。

試試這個

$sql = "SELECT id, siteID, name, description, skills, extra1, extra2 FROM folio WHERE siteID='".(int)$_GET['siteID']."' "; 
+0

我明白了,感謝您的幫助! – user1039878

+0

爲什麼對int類型值使用單引號('')? –

+0

@Arif爲了一致性,我想。儘管,siteid變成了一個字符串。 –

0
$sql = "SELECT 
      id, 
      siteID, 
      name, 
      description, 
      skills, 
      extra1, 
      extra2 
     FROM folio 
     where siteID = $siteID"; 

你只是錯過了where條款。

+0

感謝您的幫助 – user1039878