PGM Mysql PDO WHEN 或 IF 语句

PGM Mysql PDO WHEN or IF STATEMENT

是否可以在 PDO 语句中包含 WHEN 语句或 IF 语句?我已经尝试了以下但它不起作用

$stmt = $conn->prepare('SELECT company_id, name, alias, fk_company_type as type, is_active as active FROM company WHERE (CASE WHEN :srchBy = "alias" THEN alias ELSE name END)  LIKE :srchField');

$stmt->bindParam(':srchBy', $srchBy, PDO::PARAM_INT); //bind :srchField to $srchField in sql statement
$stmt->bindParam(':srchField', $srchField, PDO::PARAM_INT); //bind :srchField to $srchField in sql statement

Table结构

company_id      |23980471998218241  | 23980471998218242       |
fk_company_type |HQ                 |SITE                     |
name            |JOHN PLUMBING HQ   |JOHN PLUMBING - BRIDGE ST| 
alias           |CITY RD HQ         |BRIDGE ST SERVICE        |
is_active       |1                  |1                        | 
created_date    |2015-04-18 19:35:32|2015-04-18 19:34:46      |

遗憾的是,您不能按列名绑定参数。但你可以用其他方式

$stmt = $conn->prepare('SELECT company_id, name, alias, fk_company_type as type, is_active as active FROM company WHERE (CASE WHEN "'.$srchBy.'" = "alias" THEN alias ELSE name END)  LIKE ?');
$stmt->bindValue(1, "%$srchField%", PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
print_r($result);

每个 operator/identifier 都必须进行硬编码,但如果不是这种情况,您需要验证标识符