2017-07-01 207 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