php – 如何从列名称来自子查询的列中获取值?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何从列名称来自子查询的列中获取值?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我想问一下,是否可以让 MySQL将子查询的结果解释为一个表列来选择,而不仅仅是一个字符串?

我所拥有的是一些表,其中一些列是动态创建的,还有一个表存储创建的这些自定义列.

在这个特定的实现中,我使用它来存储我们正在开发的内容理系统的自定义文章自定义字段.

这是架构的草图.

custom_column
-----------------------------------------------------------------
id       field_name      field_tyPE   field_display    table_name
-----------------------------------------------------------------
1        news_author      string       Author              news
2        news_body        text         Body                news
3        news_heading     tITle        heading             news
4        name             title        Name                testimonials
5        message          text         Message             testimonials

考虑到所有文章(新闻,推荐书等)都有相应的field_type = title自定义字段

我想指定一个特定的表/文章,并通过执行以下操作获得所有记录的文章标题

SELECT (SELECT field_name From custom_columns WHERE field_type = "title" AND table_name = "testimonials") AS article_title From testimonials

并得到一个结果:

id       article_title
-----------------------
1        John Doe
2        Mary Jane
3        Justin Case

而不是这个,这是MysqL通过上述查询给我的东西:

id       article_title
-----------------------
1        name
2        name
3        name

我可以看到MysqL正在将名称(子查询的结果)解释为字符串,而不是要从中选择的列名.

当然,我可以这样做:

SELECT *,(SELECT field_name FROM custom_columns WHERE field_type = "title" AND table_name = "testimonials") AS article_title FROM testimonials

并操纵结果以在程序中获得我想要的内容,例如:

$article_title = $row->{$row->article_title};
//I use PHP,and most times use MysqL_fetch_object to fetch rows from a MysqL resource.

但我希望避免查询我不需要的所有无用的列,并希望节省.毕竟,我只需要一个可变数量的一列,理论上可以是很多.

我到处寻找一个我可能缺少的MysqL功能,但是从来没有找到过.我希望有人可以指出我正确的方向,或者更好的是,如果有的话,提供更好的解决方案.

谢谢!

编辑:对于那些可能不熟悉上面的PHP语法的人来说,这是一个等效的场景,但使用非常常见的数组语法代替PHP的对象语法:

$row[$row['article_title']];

解决方法

一般的经验法则是,只要您需要在sql中动态查找列(PHP不同),您就应该重新考虑您的架构.如果你问一个如何做到一点的问题,我相信你会找到很多愿意帮忙的人.

我发现的唯一动态MysqLin this question,其他一切都是变种.您的$article_title = $row-> {$row-> article_title};实际上是最好的解决方案,除非您提前知道可能的列名.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何从列名称来自子查询的列中获取值?全部内容,希望文章能够帮你解决php – 如何从列名称来自子查询的列中获取值?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。