PHP结合了2个字符串

时间:2013-12-10 11:40:49

标签: php sql

我一直在寻找答案,但我尝试的一切都给了我一个错误。

我有一个php函数:

function _buildQueryCategoryK2Multiple(){
    $query="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17";
    return $query;
}

基本上我想在$ query中添加另一行,例如:

function _buildQueryCategoryK2Multiple(){
    $query1="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17";
    $query2="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18";
    return $query1.$query2;
}

如果我这样做,虽然我收到错误。有谁知道这样做的正确方法? 谢谢

8 个答案:

答案 0 :(得分:2)

SQL IN STATEMENT

http://www.tutorialspoint.com/mysql/mysql-in-clause.htm

如果要获得17和18,请使用SQL IN语句而不是复制整个查询,如果要选择100个ID,将会是什么?你会向db发送千字节的查询吗?

示例

 function _buildQueryCategoryK2Multiple(){
//if ids you are getting in array, you can implode it to string with ',' and put the string variable instead of '17,18'
        $query="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid in (17, 18)";
        return $query;
    }

答案 1 :(得分:1)

在此处为 $query1 添加分号,如图所示

$query1="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17;";
                                                                 -----------------------------^

您需要使用 ;

分隔多个SQL语句

如果您使用MySQL WorkBench,则可以找到它。

答案 2 :(得分:1)

您应该使用 ; 分隔查询 一种方法是使用implode()

function _buildQueryCategoryK2Multiple(){

    $query[]="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17";
    $query[]="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18";
    return implode(";",$query);

}

答案 3 :(得分:1)

分号是一个问题,因为它描绘了MySQL命令行的结束。所以你需要将它添加到每行的末尾。虽然有些人会建议连接查询,但更简单的方法是更灵活 - 至少从我现实世界中使用这样的场景 - 是创建一个数组&在其上使用implode()。所以你的代码就是这样。

function _buildQueryCategoryK2Multiple(){

    $query = array();
    $query[] = "select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17;";
    $query[] = "select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18;";

    return implode(' ', $query);

}

基于您提出的查询的另一个更优雅的选项是向函数发送值数组。

function _buildQueryCategoryK2Multiple($catid_array = array()){

    if (empty($catid_array)) {
        $catid_array = array(17,18);
    }

    $query = array();
    foreach ($catid_array as $catid) {
        $query[] = sprintf("select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=%d;", $catid);
    }

    return implode(' ', $query);

}

答案 4 :(得分:0)

你用两个特殊字符“|”连接两个字符串或“#”等返回单个字符串。

在调用函数中,您可以使用您使用的特殊字符拆分两个字符串并单独使用。

由于

答案 5 :(得分:0)

需要添加;每个select声明的结尾

function _buildQueryCategoryK2Multiple(){
    $query1="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and (catid=17 OR  catid=18); ";
    $query2="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18; ";
    return $query1.' '.$query2;
}

答案 6 :(得分:0)

您可以将数组格式用作

function _buildQueryCategoryK2Multiple(){

    $returnArr = array();

    $returnArr['query1'] ="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17";

    $returnArr['query2'] ="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18";

    return $returnArr;

}

答案 7 :(得分:-1)

你可以这样做:

function _buildQueryCategoryK2Multiple()
 {
    $query="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=17";
    $query .= " union all "
    $query .= "select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18";
    return $query;
    }

function _buildQueryCategoryK2Multiple()
{
    $query="select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid in (17,18,19) ";
    return $query;
}