select语句中的PHP/MySql if运算符
我的数据库有几个表,所有表都有一个同名的列。我希望通过这种方式从这个列中获取数据,所以当从特定的表(“国家”)中获取数据时,它具有字符串append,否则只需获取数据。 这是我的方法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
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)