PDOStatement::getColumnMeta() - PDOStatement类
PDOStatement::getColumnMeta()
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)
返回结果集中一列的元数据
说明
PDOStatement::getColumnMeta(int $column): arrayWarning此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的PHP 发布版本中未通知就被修改。使用本函数风险自担。
检索一个在结果集中以0开始索引的列的元数据作为一个关联数组。
Warning并非所有 PDO 驱动都支持PDOStatement::getColumnMeta()。
参数
$column结果集中以0开始索引的列。
返回值
返回一个关联数组,它包含了下列表示一个单独列的元数据的值:
名称 | 值 |
---|---|
native_type | 用于表示列值的 PHP 原生类型。 |
driver:decl_type | 在数据库中用于表示列值的 SQL 类型。如果结果集中的列是一个函数的结果,则该值不能被PDOStatement::getColumnMeta()返回。 |
flags | 任何设置于此列的标记。 |
name | 通过数据库返回的列名。 |
table | 通过数据库返回的该列的表名 |
len | 该列的长度。除浮点小数外通常为-1 |
precision | 该列的数值精度。除浮点小数外通常为0。 |
pdo_type | 以PDO::PARAM_*常量为代表的列类型。 |
如果结果集不存在,或者是请求的列在结果集中不存在,则返回FALSE
。
更新日志
版本 | 说明 |
---|---|
5.2.3 | table字段 |
范例
检索列的元数据
下面例子展示了在一个PDO_SQLITE中,检索一个通过函数(COUNT)生成单独列的元数据的结果。
以上例程会输出:
array(6) { ["native_type"]=> string(7) "integer" ["flags"]=> array(0) { } ["name"]=> string(8) "COUNT(*)" ["len"]=> int(-1) ["precision"]=> int(0) ["pdo_type"]=> int(2) }
参见
- PDOStatement::columnCount() 返回结果集中的列数
- PDOStatement::rowCount() 返回受上一个 SQL 语句影响的行数
This method is supported in the MySQL 5.0+ driver. It can be used for object hydration: If you are building an ORM, this method is very useful to support more natural SQL syntax. Most ORMs require the column names to be aliases so that they can be parsed and turned into objects that properly represent has_one, has_many, many_to_many relationships.
I found a short discussion related to this function at http://www.sitepoint.com/forums/showthread.php?t=497257 I haven't tried it (yet?) but hopefully someone can find it useful.
native_type has the following mapping for MySQL: (tested in PHP 5.4, MySQL 5.7) INT(11) (PKs) => LONG TINYINT(4) => TINY DOUBLE => DOUBLE VARCHAR => VAR_STRING CHAR => STRING DATE => DATE Functions => VAR_STRING - DATEFORMAT() - CONCAT()
I recently added a note to a small function that went through the results of PDOStatement::fetch and mapped columns to integer or float types. I forgot to test for columns that can have a null value! I'm updating the code here, sorry. This website doesn't let me edit the original comment, so I'm just gonna link to a gist in case it needs even further fixes. https://gist.github.com/AeonFr/db3b2a8a95753076d9e4da42d29365d2 I basically added this code:
I was able to successfully pull off basic type conversion for integer and float values in PDO. NULL values were returning as null, but integers and floats weren't, so I decided to go with a simple solution. It's not tested on all database types, so if you think it needs improvement, let me know (my twitter is "francanobr") The code sample is part of a function, the function declaration is not included, evaluate how to integrate it with your app.
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)