PHP / MYSQL - 返回变量匹配数据点的列名[重复]
Posted
技术标签:
【中文标题】PHP / MYSQL - 返回变量匹配数据点的列名[重复]【英文标题】:PHP/MYSQL - Return column name where variable matches datapoint [duplicate] 【发布时间】:2020-05-24 16:01:54 【问题描述】:我有一个查询,在 Psuedo mysql 中说:
"SELECT * FROM table WHERE col1 = $x OR col2 = $x"
现在我正在遍历结果的每一行,但想为每一行确定 x 所在的列。因此,我希望能够返回 column_name
,其中变量 $x == $x
在表中。
我曾尝试使用fetch_field()
,但无济于事。
【问题讨论】:
【参考方案1】:您可以使用case
表达式向结果集中再添加一列,指示搜索值来自哪一列
SELECT
t.*,
case when col1 = :x then 'col1' else 'col2' end which_col
FROM table t
WHERE :x IN (col1, col2)
旁注:
您确实想使用参数化查询来提高效率和安全性 - 更多关于 here
你应该养成在select
子句中枚举你想要的列的习惯,而不是盲目地使用select *
——这使得查询更容易理解和维护,并且可以让你的代码更高效
您可以使用 then IN
将WHERE
子句中的条件缩短一点
【讨论】:
以上是关于PHP / MYSQL - 返回变量匹配数据点的列名[重复]的主要内容,如果未能解决你的问题,请参考以下文章
URL 中的 PHP/MySQL 变量 - 文本被删除,数字部分仅用于选择数据库记录