Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组唯一问题_Php_Sql_Arrays - Fatal编程技术网

Php 数组唯一问题

Php 数组唯一问题,php,sql,arrays,Php,Sql,Arrays,我有一个搜索引擎类型的网站。它接受用户输入,将查询存储为$q,分解查询并搜索数据库。然后,它显示带有每个结果的名称和网址的结果 例如,如果我搜索“计算机编程”。。。堆栈溢出,stackoverflow.com将是我的结果。但是,它会显示两次。(一次用于计算机,一次用于编程。) 我试图用array_unique函数来解决这个问题,但它不起作用 任何帮助都将不胜感激 // trim whitespace $trimmed = trim($q); // seperate key-phrase

我有一个搜索引擎类型的网站。它接受用户输入,将查询存储为$q,分解查询并搜索数据库。然后,它显示带有每个结果的名称和网址的结果

例如,如果我搜索“计算机编程”。。。堆栈溢出,stackoverflow.com将是我的结果。但是,它会显示两次。(一次用于计算机,一次用于编程。)

我试图用array_unique函数来解决这个问题,但它不起作用

任何帮助都将不胜感激

    // trim whitespace

$trimmed = trim($q);
// seperate key-phrases
$trimmed_array = explode(" ", $trimmed);

// remove duplicates

$clean_array = array_unique($trimmed_array);

//query dataabase
foreach ($clean_array as $trimm){
     $query = mysql_query("SELECT * FROM forumlist WHERE `keys` LIKE '%" . mysql_real_escape_string($trimm) . "%' ORDER BY rating DESC, total_ratings DESC") or die(mysql_error());

谢谢大家!

您需要在dba的结果上运行array_unique。它消除了重复的结果。但是我现在得到了这个错误:您的SQL语法有一个错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“WHERE
keys
如“%computer%”或
keys
如“%programming%”按比率排序”附近使用的正确语法。谢谢你的帮助,请告诉我整个问题。通过使用echo$query,在mysql_query()之前,它是第二个搜索词。我尝试以“计算机编程”的方式进行查询,这是回音语句:从forumlist中选择*,其中
如“%computer%”按评级顺序描述,total_评级描述。应该从“computer”返回的正确链接确实会返回,但是从“programming”返回的链接不会返回。使用“computer programming”后,它是完整的查询吗它似乎完成了“计算机”的查询和显示过程,然后显示了我上面打印的错误。例如,“计算机”有两个独特的结果。“编程”有两个独特的结果。“计算机编程”返回“计算机”的2个结果,然后返回错误消息。“棒棒糖计算机”返回0个结果和错误消息。
//query dataabase
$query = 'SELECT * FROM forumlist  ';
$where = array();
foreach ($clean_array as $trimm){
     $where[] = " `keys` LIKE '%" . mysql_real_escape_string($trimm) . "%' ";
}

if(!empty($where)){
    $query .= " WHERE ". implode(' OR ', $where);
}
$query .= " ORDER BY rating DESC, total_ratings DESC";
$result = mysql_query($query) or die(mysql_error());