select语句中的PHP/MySql if运算符

select语句中的PHP/MySql if运算符,php,mysql,database,if-statement,select-query,Php,Mysql,Database,If Statement,Select Query,我的数据库有几个表,所有表都有一个同名的列。我希望通过这种方式从这个列中获取数据,所以当从特定的表(“国家”)中获取数据时,它具有字符串append,否则只需获取数据。 这是我的方法 public function getInfo($table, $id) { $operate = $this->pdo->prepare("select if({$table}=='countries', 'concat('capital', city)', 'city') city from

我的数据库有几个表,所有表都有一个同名的列。我希望通过这种方式从这个列中获取数据,所以当从特定的表(“国家”)中获取数据时,它具有字符串append,否则只需获取数据。 这是我的方法

public function getInfo($table, $id) {
    $operate = $this->pdo->prepare("select if({$table}=='countries', 'concat('capital', city)', 'city') city from {$table} where id= {$id}");
        $operate->execute();

        return $operate->fetchObject();
    }

我在一个类中有几个方法,而且一切都很好。如果不使用if语句,这个表达式也可以工作,问题似乎在于这个表达式:{$table}=='countries'。然而,我找不到我的错误在哪里。我是php新手,很高兴知道这个表达式有什么问题,我该如何解决它

不幸的是,PHP中的
${}
-字符串插值方式只支持一个表达式,比如从数组中获取值。在此构造中不可能使用if语句或三元运算符

这将是一种选择:

$column = ($table == 'countries')? "concat('capital',city)":"city";
$operate = this->pdo->prepare("select $column from {$table} where id= {$id}");

你有没有试过用背勾来代替花括号?不幸的是,它们没有多大区别!真不敢相信它终于起作用了。只有在使用concat时,它才使用逗号而不是plus-concat('capital',city)