PHP PDO 是一種數(shù)據(jù)庫訪問層,可以通過 PHP 對各種數(shù)據(jù)庫進(jìn)行統(tǒng)一訪問。在使用 PHP PDO 進(jìn)行數(shù)據(jù)庫操作時,我們常常需要獲取表的列名。本文就來詳細(xì)介紹如何通過 PHP PDO 獲取數(shù)據(jù)庫表的列名。
PHP PDO 提供了獲取表列名的兩種方式:
1. 通過查詢系統(tǒng)表的方式獲取表的列名。
$columns = $pdo->query("SHOW COLUMNS FROM tableName")->fetchAll(PDO::FETCH_COLUMN);
該方式通過查詢系統(tǒng)表 SHOW COLUMNS 來獲取指定表的全部列信息,再通過 FETCH_COLUMN 來獲取所有列的列名。
例如,獲取 user 表的所有列名:
$columns = $pdo->query("SHOW COLUMNS FROM user")->fetchAll(PDO::FETCH_COLUMN); print_r($columns);
輸出如下:
Array ( [0] => id [1] => username [2] => password [3] => email )
2. 通過查詢數(shù)據(jù)的方式獲取表的列名。
$stmt = $pdo->prepare("SELECT * FROM tableName WHERE 1=0"); $stmt->execute(); $columns = array(); for ($i = 0; $i < $stmt->columnCount(); $i++) { $col = $stmt->getColumnMeta($i); $columns[] = $col['name']; }
該方式通過查詢指定表的數(shù)據(jù)(此處查詢條件為 1=0,即永遠(yuǎn)不會返回結(jié)果),再通過 getColumnMeta() 方法獲取列的元數(shù)據(jù),其中包括列名。
例如,獲取 pet 表的所有列名:
$stmt = $pdo->prepare("SELECT * FROM pet WHERE 1=0"); $stmt->execute(); $columns = array(); for ($i = 0; $i < $stmt->columnCount(); $i++) { $col = $stmt->getColumnMeta($i); $columns[] = $col['name']; } print_r($columns);
輸出如下:
Array ( [0] => id [1] => name [2] => species [3] => breed [4] => age )
以上兩種方式都可以通過參數(shù)綁定來獲取表名。
$tableName = 'user'; $columns = $pdo->query("SHOW COLUMNS FROM $tableName")->fetchAll(PDO::FETCH_COLUMN); $stmt = $pdo->prepare("SELECT * FROM $tableName WHERE 1=0"); $stmt->execute(); $columns = array(); for ($i = 0; $i < $stmt->columnCount(); $i++) { $col = $stmt->getColumnMeta($i); $columns[] = $col['name']; }
以上就是通過 PHP PDO 獲取數(shù)據(jù)庫表列名的方式,根據(jù)實(shí)際場景選擇合適的方式即可。