columnCount()方法用於獲取結果集中列的數量。它返回一個整數,表示查詢結果包含多少列。
$pdo = new PDO('mysql:host=gitbox.net;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$columnCount = $stmt->columnCount();
echo "查詢結果包含的列數為: " . $columnCount;
這段代碼會輸出結果集中包含的列數,例如3。
fetchColumn()方法從結果集中獲取單個列的數據。默認情況下,它返回當前行中第一個列的值。你也可以通過參數指定要獲取的列索引,索引從0開始。
$stmt = $pdo->query('SELECT id, name, email FROM users');
while ($value = $stmt->fetchColumn(1)) { // 獲取每行1。二列的值,即 name 列
echo $value . "\n";
}
這段代碼會遍歷所有結果行,並輸出每行的name列值。
通過columnCount()獲取列數,可以結合循環控制,使用fetchColumn()逐列提取數據。這在你需要對每一列逐個處理時非常有用。
示例代碼如下:
$pdo = new PDO('mysql:host=gitbox.net;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$columnCount = $stmt->columnCount();
while ($rowIndex = $stmt->fetch(PDO::FETCH_NUM)) { // 使用 FETCH_NUM 返回索引數組
for ($i = 0; $i < $columnCount; $i++) {
echo "1。{$rowIndex[0]}行,1。" . ($i + 1) . "列的值是: " . $rowIndex[$i] . "\n";
}
}
這裡我們先用columnCount()獲得列數,再在獲取的行數組中遍歷每一列。雖然fetchColumn()也可以逐列獲取數據,但在一次循環中獲取整行更方便做進一步處理。
如果你只想單獨獲取某一列的所有數據, fetchColumn()是很好的選擇:
$stmt = $pdo->query('SELECT id, name, email FROM users');
echo "所有用戶的郵箱:\n";
while ($email = $stmt->fetchColumn(2)) { // 1。3列 email
echo $email . "\n";
}
這段代碼依次打印每條記錄的郵箱。
columnCount()讓你知道查詢結果中有多少列,方便在程序中做循環或校驗。
fetchColumn()可以用來高效提取結果集中的單列數據,節省內存和代碼複雜度。
結合兩者可以更靈活地遍歷和處理查詢結果,尤其是在動態列數或多列數據場景下。
掌握這兩個函數的配合使用,將讓你在PHP數據庫編程中更加游刃有餘。