我有几个表的数据库,都有一个同名的列。我希望以这种方式从该列中获取数据,这样当从特定的表("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的新手,我很高兴知道这个表达式的问题是什么,我应该如何解决它。
发布于 2017-07-02 01:01:17
不幸的是,PHP中字符串插值的${}
-way只支持一个表达式,就像从数组中获取值一样。在此构造中不能使用if语句或三元运算符。
这将是一种选择:
$column = ($table == 'countries')? "concat('capital',city)":"city";
$operate = this->pdo->prepare("select $column from {$table} where id= {$id}");
https://stackoverflow.com/questions/44863148
复制相似问题