gpt4 book ai didi

php - PGM Mysql PDO WHEN 或 IF 语句

转载 作者:行者123 更新时间:2023-11-29 12:16:11 24 4
gpt4 key购买 nike

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

表结构

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 |

最佳答案

不幸的是,您无法通过列名称绑定(bind)参数。但你可以用其他方法

$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);

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

关于php - PGM Mysql PDO WHEN 或 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com