mysql - PHP 的 pdo 方法,怎麼返回欄位名?

來源:互聯網
上載者:User
關鍵字 php sql mysql
$pdo->query($SQL); 

用了之後,可以返回結果集,但是沒有欄位名,
當然用

$stmt->fetch( PDO::FETCH_ASSOC )

可以把數組的key當成欄位名,

但是除了欄位名,別的資訊都沒有,

請問有什麼方法像

 object mysqli 的 $result->fetch_field()

一樣,可以看到欄位的全部資訊呢?

回複內容:

$pdo->query($SQL); 

用了之後,可以返回結果集,但是沒有欄位名,
當然用

$stmt->fetch( PDO::FETCH_ASSOC )

可以把數組的key當成欄位名,

但是除了欄位名,別的資訊都沒有,

請問有什麼方法像

 object mysqli 的 $result->fetch_field()

一樣,可以看到欄位的全部資訊呢?

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);}

僅供參考。

sql= "SHOW COLUMNS FROM `your_table`"

返回的結果集就是your_table 的所有欄位 還有TYPE 等

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.