mySQL搜索没有真正起作用

时间:2011-12-05 18:39:53

标签: php mysql search

这是一个mySQL查询,密码和用户名故意拙劣。只返回一个结果是没有返回除了今天的那个结果之前的任何其他信息。无论什么搜索尝试它都不起作用。

 <?php 

    $proto = $_GET['p'];
    $terms = $_GET['f'];
    $return;

    if($proto == 'inline'){
        echo 'checking';
    $username="*******";
    $password="*******";
    $database="*******";
    $my_text = $_GET['f'];        //what I'm searching for
    $my_category = '8';        //whatever category number it is

    mysql_connect(localhost,$username,$password) or die(mysql_error());
    mysql_select_db($database) or die(mysql_error());

    $result = mysql_query("SELECT ID FROM wp_posts WHERE post_title LIKE '%$my_text%' ");
    // select all posts that have your text

    while ($row = mysql_fetch_array($result));

    $postname = $row['post_name'];
    $posttitle = $row['post_title'];
    $postID = $row['ID']; 
    $date = date ( 'd-M-Y' , strtotime($row['post_date']) );

        $return.= '
                    <a href="http://www.robin-knight.com/' . $postname .'">'.$posttitle.' ('.$postname.')<br /><span style="font-size:10px; color:#555;">'.get_the_time("d-M-Y", $postID).' - '.get_post_meta($postID, "status", true).'</span></a>
                ';

       //while have posts

       echo $return;

    }

    ?>

3 个答案:

答案 0 :(得分:2)

除了其他信息:

我可能会错过它,但我没有看到你在while循环中包含任何内容。

这就是为什么它只会得到一个。你需要使用大括号{}

答案 1 :(得分:0)

您的查询未选择post_namepost_titlepost_date。你说SELECT ID FROM wp_posts,所以它按照指示选择了ID,没有别的。您的date()来电有效,因为strtotime()返回false,所以它使用今天的日期作为后备。

答案 2 :(得分:-1)

这:

 mysql_query("SELECT ID FROM wp_posts WHERE post_title LIKE '%$my_text%' ");

非常不安全 - my_text未被转义,并且取自GET参数,因此它会打开您的SQL注入攻击。使用mysql_real_escape_string转义它,或者更好的是,在代码中使用参数化查询。