Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP组合2个字符串_Php_Sql - Fatal编程技术网

PHP组合2个字符串

PHP组合2个字符串,php,sql,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 _buildQueryC

我到处寻找这个问题的答案,但我尝试的每件事都给我一个错误

我有一个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;
}
如果我这样做,虽然我得到一个错误。有人知道正确的方法吗? 谢谢

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

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

如果您正在使用,您可以找到它。

在$query1中添加分号,如图所示

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


如果您正在使用,您可以找到它。

您可以这样做:

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=17";
    $query .= " union all "
    $query .= "select id,title,alias,catid,introtext FROM #__k2_items where published=1 and catid=18";
    return $query;
    }


您可以使用一些特殊字符(如|或等)对两个字符串进行concat,然后返回单个字符串

在调用函数中,可以使用所使用的特殊字符拆分两个字符串,并分别使用


谢谢

使用一些特殊字符(如|或等)对两个字符串进行编码,然后返回单个字符串

在调用函数中,可以使用所使用的特殊字符拆分两个字符串,并分别使用

谢谢

需要添加;每个选择状态的结束

需要补充;每个选择状态的结束


可以将数组格式用作

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;

}

您可以将数组格式用作

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;
}

SQL IN语句 若您想要得到17和18,那个么在语句中使用SQL而不是复制整个查询,若您想要选择100个ID,那个么会怎么样?您将向db发送千字节的查询

例如:

SQL IN语句 若您想要得到17和18,那个么在语句中使用SQL而不是复制整个查询,若您想要选择100个ID,那个么会怎么样?您将向db发送千字节的查询

例如:


您应该将查询与查询分开; 一种方法是使用内爆:


您应该将查询与查询分开; 一种方法是使用内爆:


分号是一个问题,因为它表示MySQL命令行的结尾。因此,您需要将其添加到每行的末尾。另外,虽然有些人会建议连接查询,但至少从我在现实世界中使用的类似场景来看,一种更简单、更灵活的方法是创建一个数组并在其上使用内爆。所以你的代码是这样的

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);

}

分号是一个问题,因为它表示MySQL命令行的结尾。因此,您需要将其添加到每行的末尾。另外,虽然有些人会建议连接查询,但至少从我在现实世界中使用的类似场景来看,一种更简单、更灵活的方法是创建一个数组并在其上使用内爆。所以你的代码是这样的

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);

}

除了附加字符串,您真正想做什么?错误是什么?您想做什么?查找catid为17或18的记录?除了附加字符串之外,您真正想做什么?错误是什么?您想做什么?查找catid为17或18的记录?我没有否决投票,但你完全忽略了最初的问题,即为什么他们从代码中看到错误&完全忽略了根本原因&更直接的答案。请记住,网上发布的示例可能是伪代码,因此最好始终遵从原始问题的预期要求。@JakeGould好的,请查看sql:s,并仔细考虑他/她试图从中获得什么。可以,您可以通过添加来拆分sql:s;但是你用php怎么处理呢?就像我说的,我不知道。也许所呈现的代码实际上是简化了的,所以假设为什么组合这两个查询这一更大的问题才是真正的问题&而不是这样做的逻辑。好吧,我只是解释我回答类似问题的方法。就这么简单。我坚持我的方式来处理这样的问题。另外,不要因为反对票而紧张。这里有无数个问题。我没有否决投票,但你完全忽略了海报的原始问题,即为什么他们看到代码中有错误&完全忽略了根本原因&更直接的答案。请记住,网上发布的示例可能是伪代码,因此最好始终遵从原始问题的预期要求。@JakeGould好的,请查看sql:s,并仔细考虑他/她试图从中获得什么。可以,您可以通过添加来拆分sql:s;但是你用php怎么处理呢?就像我说的,我不知道。也许所呈现的代码实际上是简化了的,所以假设为什么组合这两个查询这一更大的问题才是真正的问题&而不是这样做的逻辑。好吧,我只是解释我回答类似问题的方法。简单到 那个我坚持我的方式来处理这样的问题。另外,不要因为反对票而紧张。这里有无数的问题。