开发者社区> 问答> 正文

PHP 的 pdo 方法,怎么返回字段名?

$pdo->query($SQL);
用了之后,可以返回结果集,但是没有字段名,
当然用

$stmt->fetch( PDO::FETCH_ASSOC )
可以把数组的key当成字段名,

但是除了字段名,别的信息都没有,

请问有什么方法像

object mysqli 的 $result->fetch_field()
一样,可以看到字段的全部信息呢?

展开
收起
a123456678 2016-07-04 17:30:59 2083 0
1 条回答
写回答
取消 提交回答
  • PDO是PDO, Mysqli是Mysqli,我们没办法要求PDO像Mysqli保持一样的结构和设计。
    也许你会觉得mysqli的fetch_field很方便,但是实际上这个方法的使用概率极低,因为通常会读出表的所有字段信息并缓存起来,而不是总是进行字段查询。
    表现最明显的框架如Cakephp,当你用直接编辑数据表的方法增加了一个新字段之后数据并不会被保存到这个字段中,必须先清除缓存的数据表信息才行。

    通过阅读不同的PHP框架,我们可以发现极少会有框架需要开发人员直接调用PDO或者mysqli对象去执行sql,它们往往将其通过DbAdapter之类的接口进行封装。我建议你思考这样做的好处然后优化自己的代码结构。
    你问题中的这个行为通常也不需要封装在db对象中,一般是在Table对象处理,例如

    class Table {
        protected $_tableName;
        public function __construct($tableName);
        protected function _readFieldsPrototype();
        protected function _getCachedFieldsPrototype();
        public function getFieldPrototype($filed);
    }

    仅供参考。

    2019-07-17 19:50:58
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载