如何使用此代码避免使用带有自动提示的MYSQL重复返回数据? 非常感谢您的帮助
<?php
include('conn.php');
$str = strtolower($_GET['content']);
if(strlen($str))
{
$sel = mysql_query("select * from Streams where title like '".trim($str)."%'");
if(mysql_num_rows($sel))
{
echo "<table border =\"0\" width=\"100%\">\n";
if(mysql_num_rows($sel))
{
echo "<script language=\"javascript\">box('1');</script>";
while($row = mysql_fetch_array($sel))
{
$country = str_ireplace($str,"<b>".$str."</b>",($row['title']));
echo "<tr id=\"word".$row['title']."\" onmouseover=\"highlight(1,'".$row['title']."');\" onmouseout=\"highlight(0,'".$row['title']."');\" onClick=\"display('".$row['title']."');\" >\n<td>".$country."</td>\n</tr>\n";
}
}
echo "</table>";
}
}
else
{
echo "<script language=\"javascript\">box('0');</script>";
}
?>
答案 0 :(得分:1)
通过查看代码,您似乎只使用数据库中的“标题”字段。你可以这样做:
$sel = mysql_query("SELECT DISTINCT title FROM Streams WHERE title LIKE '".mysql_real_escape_string(trim($str))."%'");
[...] DISTINCT选项指定 是否应该重复行 回。 [...] DISTINCT指定 从中删除重复的行 结果集。指定是错误的 两种选择。
答案 1 :(得分:1)
我在代码中看到的是,您在PHP代码中使用的SQL结果集中只有一个字段 - title
。那么为什么不把你的查询写成:
"SELECT DISTINCT `title`
FROM Streams
WHERE title like '".trim($str)."%'"
或许如果您无法更改查询,可以将title
存储在PHP数组中,然后在其上运行array_unique
以避免重复,然后再将其写入HTML。
答案 2 :(得分:1)
理想情况下,您需要选择不同的元素
mysql_query("SELECT DISTINCT(title) FROM Streams WHERE title LIKE '".mysql_real_escape_string(trim($str))."%'");
当然,如果有任何理由你不能这样做, 将数据放入一个数组并检查它是否先前已添加以防止重复,在while
之外定义数组 $data = array()
if (!in_array($row["title"], $data)){
\\do your thing
array_push($data, $row["title");
}