ホームページ > バックエンド開発 > PHPチュートリアル > mysql - PHP 的 pdo 方法,怎么返回字段名?

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

WBOY
リリース: 2016-06-06 20:08:43
オリジナル
1165 人が閲覧しました

<code>$pdo->query($SQL); </code>
ログイン後にコピー
ログイン後にコピー

用了之后,可以返回结果集,但是没有字段名,
当然用

<code>$stmt->fetch( PDO::FETCH_ASSOC )</code>
ログイン後にコピー
ログイン後にコピー

可以把数组的key当成字段名,

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

请问有什么方法像

<code> object mysqli 的 $result->fetch_field()</code>
ログイン後にコピー
ログイン後にコピー

一样,可以看到字段的全部信息呢?

回复内容:

<code>$pdo->query($SQL); </code>
ログイン後にコピー
ログイン後にコピー

用了之后,可以返回结果集,但是没有字段名,
当然用

<code>$stmt->fetch( PDO::FETCH_ASSOC )</code>
ログイン後にコピー
ログイン後にコピー

可以把数组的key当成字段名,

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

请问有什么方法像

<code> object mysqli 的 $result->fetch_field()</code>
ログイン後にコピー
ログイン後にコピー

一样,可以看到字段的全部信息呢?

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

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

<code>class Table {
    protected $_tableName;
    public function __construct($tableName);
    protected function _readFieldsPrototype();
    protected function _getCachedFieldsPrototype();
    public function getFieldPrototype($filed);
}</code>
ログイン後にコピー

仅供参考。

<code>sql= "SHOW COLUMNS FROM `your_table`"
</code>
ログイン後にコピー

返回的结果集就是your_table 的所有字段 还有TYPE 等

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート