MySQL查询没有返回数据(var_dump = NULL),为什么?

时间:2014-03-12 01:23:16

标签: php mysql

我花了太多时间处理这个足够简单的问题,当我在它返回的函数var_dump上使用NULL时,我无法理解世界上发生什么事情才能返回数据。 }}。确切地说,它返回“没有结果”,因为我已将其设置为,如果没有任何数据要检索,只有数据库充满了数据,但它没有检索,任何人都可以看到问题所在我不能......我甚至早些时候在这里尝试过,但没有。

这是函数..

public function search()
{
    if(isset($_GET['search']))
    {
        $searchTerms = trim(strip_tags($_GET['search']));

        $sth = $this->db->prepare(
            "SELECT COUNT(*) 
               FROM articles 
              WHERE (article_content LIKE :search1) 
                 OR (article_title LIKE :search2)"
        );

        $sth->execute( 
            array(
                ':search1' => '%' . $searchTerms . '%', 
                ':search2' => '%' . $searchTerms . '%'
            ) 
        );

        if($sth->fetchColumn() > 0)
        {
            while($row = $sth->fetchAll())
            {
                return "search results: ".$row['article_title'];
                return "".$row['article_content'];
            }
        } else {
            echo "No results!";
        }
    }
}

1 个答案:

答案 0 :(得分:0)

尝试在SQL中使用别名:

$sth = $this->db->prepare(
            "SELECT COUNT(*) AS RESULT_COUNT
               FROM articles 
              WHERE (article_content LIKE :search1) 
                 OR (article_title LIKE :search2)"
        );

使用$row['RESULT_COUNT']

获取计数

然后为结果创建单独的查询,如:

$sth = $this->db->prepare(
            "SELECT article_title, article_content
               FROM articles 
              WHERE (article_content LIKE :search1) 
                 OR (article_title LIKE :search2)"
        );

另一方面,了解您想要实现的目标,您可以单独使用第二个查询获取article_titlearticle_content,然后使用以下方式获取计数:

if($sth->rowCount() > 0)