如何在正常的sql查询中加入限制

时间:2015-09-22 09:40:15

标签: php mysql sql codeigniter

我想在此

中加上限制10
function getArticles($search_key,$pub_status)       
{ 
    $sql="SELECT * FROM (`ms_article`) ";
    if($search_key != '')
    {
        $sql.="WHERE  (";
        $words = explode(" ",$search_key);       
        for($i=0;$i<count($words);$i++)
        {
            $title_con.="`article_title` LIKE '%".$words[$i]."%' OR";
            $abstract_con.="`article_abstract` LIKE '%".$words[$i]."%' OR";
            $keywords_con.="`article_keywords` LIKE '%".$words[$i]."%' OR"; 
        }
        $sql.=$title_con.$abstract_con.substr($keywords_con, 0, -2).") AND  (`article_status` = 1 ";   
    } else{
        $sql.="WHERE (`article_status` = 1 ";
    }            

    if($pub_status==0){
       $sql.="AND `private_status` <> 1";
    }
    $sql.=")"; 
    $result=$this->db->query($sql) ;   
    // echo[$result];
    // return $result;  
}

但我不知道该查询中的限制追加。 我在哪里可以放置它以及如何在codeigniter中回显查询?

4 个答案:

答案 0 :(得分:8)

在查询结尾追加Limit,然后echo

$sql.=")";
$sql.=" LIMIT 10";// added limit at last of query
echo $sql; //printing generated query
$result=$this->db->query($sql) ;

答案 1 :(得分:2)

尝试此代码可能对您有用。

$sql.=")";
$sql.=" LIMIT 0,10";
echo $sql;
$result=$this->db->query($sql) ;

答案 2 :(得分:1)

直接从文档:http://www.codeigniter.com/user_guide/database/examples.html#standard-query-with-single-result

中拉出来

但这也取决于您使用的数据库。 LIMIT语法适用于PostgreSQL,MySQL,SQLite,但sqlserver(微软)这是一个完全不同的故事

答案 3 :(得分:1)

您可以在查询末尾添加限制,如下所示:

$sql.=")";
$sql.=" LIMIT 10, 0";   // added limit of 10 and offset 0 
echo $sql;              //printing generated query
$result=$this->db->query($sql) ;

在您的情况下,您只是将查询构建为字符串,以便您可以回显字符串以查看最终查询。

然而,在使用Codeigniter的查询生成器时,您可以使用以下命令检查上次执行的查询:

$this->db->last_query();

我通常将这些函数之王放在一个单独的帮助文件中,这对于稍后调试任何一段代码非常有用:

function q($die = true){
  $ci =& get_instance();
  echo $ci->db->last_query();
  if($die) die('<br>----------Query Ends here--------<br>');
}