我正在使用MySQL和“喜欢”查询来查找页面。我需要能够以这种方式进行操作,但这意味着这些页面将是相同的:

www.mysite.com/blog/hello-world

www.mysite.com/blog/hello-worl

它们都起作用,并显示同一页面。如何解决(可能使用.htaccess?)这个问题? :\

非常感谢

编辑:

PHP-

if(isset($_GET['title'])) {
                $blogtitle=mysql_real_escape_string($_GET['title']);
                $title_two = strtolower(str_replace("-", " ", $blogtitle));
                $title_two = strtolower(str_replace("?", "", $title_two));
                $title_two = mysql_real_escape_string($title_two);

                $postmatch = "select * from blog where title LIKE '%".$title_two."%' LIMIT 1;";
                $postquery = mysql_query($postmatch) or die ("Could not match data because ".mysql_error());
                $blogtitle=mysql_result($postquery,0,"title");

                $title="$blogtitle";

最佳答案

好吧,您有了URL:www.mysite.com/blog/hello-world WHERE hello world是搜索字符串

我建议您将它们存储到数组中

$keyWrd = array();
$keyWrd = strtolower($_GET['keywd']); // MUST DO VALIDATION
$keyWrd = explode(" ",$keyWrd);
$TotalKeyVal = count($keyWrd);

if(!empty($keyWrd[0]))
    {
        $SrcQryStr = "SELECT id,title,body FROM tbl_name WHERE";
        for($i=0;$i<$TotalKeyVal;$i++)
            {
                $SrcQryStr .= " title LIKE '%";
                $SrcQryStr .= $keyWrd[$i];
                $SrcQryStr .= "%'";

                $SrcQryStr .= ' OR ';

                $SrcQryStr .= " body LIKE '%";
                $SrcQryStr .= $keyWrd[$i];
                $SrcQryStr .= "%'";

                if(($TotalKeyVal-1)!=$i) $SrcQryStr .= ' OR ';
            }
        $SrcQryStr .= " ORDER by created_date DESC";


现在,您有了$ SrcQryStr查询字符串。您可以在if(!empty($keyWrd[0]) && MORE HERE)上添加更多条件。在这里,您可以使用爆破或多次爆破而不是for循环。

现在为什么%。$ keywd。%

范例:

STRING:欢迎使用Stack Overflow!

搜寻关键字:ack

它会显示找到的匹配项,因为在堆栈WHILE%。$ keywd。%中找到了ack。

它不会显示找到的匹配项,因为没有单词以ack WHILE $ keywd。%开头

它不会显示找到的匹配项,因为没有确切的单词ack,而$ keywd

关于php - SQL“赞”导致重复的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3226245/

10-14 17:58
查看更多