2011-11-14 202 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