PHP/MySql select 语句中的 if 运算符
PHP/MySql if-operator within select statement
我有几个 table 的数据库,它们都有一个同名的列。我想以这种方式从此列中获取数据,因此当它从特定的 table ("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();
}
我在 class 中有几种方法,一切正常。这个也可以在没有 if 语句的情况下工作,问题似乎出在这个表达式上:{$table}=='countries'。但是,我找不到我的错误在哪里。我是 php 的新手,很想知道这个表达式有什么问题以及我该如何解决它。
不幸的是,PHP 中的 ${}
字符串插值方式仅支持一种表达式,例如从数组中获取值。无法在此构造中使用 if 语句或三元运算符。
这是一个选项:
$column = ($table == 'countries')? "concat('capital',city)":"city";
$operate = this->pdo->prepare("select $column from {$table} where id= {$id}");
我有几个 table 的数据库,它们都有一个同名的列。我想以这种方式从此列中获取数据,因此当它从特定的 table ("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();
}
我在 class 中有几种方法,一切正常。这个也可以在没有 if 语句的情况下工作,问题似乎出在这个表达式上:{$table}=='countries'。但是,我找不到我的错误在哪里。我是 php 的新手,很想知道这个表达式有什么问题以及我该如何解决它。
不幸的是,PHP 中的 ${}
字符串插值方式仅支持一种表达式,例如从数组中获取值。无法在此构造中使用 if 语句或三元运算符。
这是一个选项:
$column = ($table == 'countries')? "concat('capital',city)":"city";
$operate = this->pdo->prepare("select $column from {$table} where id= {$id}");