在查询中为值添加别名

时间:2013-11-26 15:22:16

标签: php

很抱歉,如果我的问题不那么容易理解。我的英语不太好。我使用SQL查询的引号处理所有字段,并通过函数array_map()执行此操作,我需要将每个字段添加到表的别名 当我这样做时:

private function fieldClause($fields, $alias) 
{



    if(is_array($fields)) {

        $fields = array_map(function($field) {
            return" $alias.`$field`";
        },$fields);

    }

    $fields = implode(",", $fields);    
    return $fields;

}

我得到错误 - 未定义的变量:别名

2 个答案:

答案 0 :(得分:0)

在您的匿名函数中,未定义$ alias变量,您必须将其作为参数添加到您的函数中。还要注意反引号操作符[1],即使我不确定如何在双引号字符串中评估反引号。

此版本将在$ fields数组中的每个元素输出“$ field。$ alias”:

function mapAlias ($field, $alias) {
  return "$alias.$field";
}

if (is_array($fields)) {
  $fields= array_map("mapAlias", $fields, $alias);
}

[1] http://us3.php.net/manual/en/language.operators.execution.php

答案 1 :(得分:0)

如果您想坚持使用匿名功能,可以使用use

private function fieldClause($fields, $alias) 
{
    if(is_array($fields)) {
        $fields = array_map(function($field) use ($alias) {
            return" $alias.`$field`";
        },$fields);
    }

    $fields = implode(",", $fields);    
    return $fields;

}

否则创建另一个与array_map()一起使用的函数并传递2个参数。