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 INWHERE 子句中的条件缩短一点

【讨论】:

以上是关于PHP / MYSQL - 返回变量匹配数据点的列名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

URL 中的 PHP/MySQL 变量 - 文本被删除,数字部分仅用于选择数据库记录

PHP 和 MYSQL:查询在具有值的列上返回 null

在变量中搜索字符串并返回匹配的字符串

如何在执行php脚本后将mysql查询结果返回到html页面?

使用 php 变量创建动态 mysql 查询

Laravel:如何查询包含json数据的表中的列并仅返回查询匹配的对象