2017-07-01 95 views
1

我有数据库与几个表,都有一个具有相同名称的列。我想以这种方式从这个列中获取数据,所以当它从特定的表(“国家”)获取时,它有字符串附加,否则数据就会被简单地获取。 这里是我的方法选择语句中的PHP/MySql if-operator

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} =='国家'。但是,我找不到我的错误在哪里。我对PHP很陌生,很高兴知道这个表达式有什么问题,我该如何解决它。

+0

您是否尝试过与反引号替换大括号? –

+0

不幸的是,他们没有太大的区别 –

回答

1

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

这将是一种选择:

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

谢谢!不能相信它终于有效。只有在使用concat时,它使用逗号而不是plus - concat('capital',city) –

+0

哦,对不起。是一个错字:) – talaub