脚本宝典收集整理的这篇文章主要介绍了php – 如何从列名称来自子查询的列中获取值?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我所拥有的是一些表,其中一些列是动态创建的,还有一个表存储创建的这些自定义列.
在这个特定的实现中,我使用它来存储我们正在开发的内容管理系统的自定义文章的自定义字段.
这是架构的草图.
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
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']];
以上是脚本宝典为你收集整理的php – 如何从列名称来自子查询的列中获取值?全部内容,希望文章能够帮你解决php – 如何从列名称来自子查询的列中获取值?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。