select语句中的PHP / MySql if-operator

时间:2017-07-01 16:30:56

标签: php mysql database if-statement select-query

我有几个表的数据库,都有一个同名的列。我想以这种方式从该列获取数据,因此当从特定表(“countries”)获取数据时,它会附加字符串,否则只需获取数据。 这是我的方法

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的新手,很高兴知道这个表达式有什么问题,我该如何解决它。

1 个答案:

答案 0 :(得分:1)

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

这是一个选择:

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