PHP Conference Japan 2024

PDOStatement::fetchColumn

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)

PDOStatement::fetchColumn 從結果集的下一列傳回單一欄位

說明

public PDOStatement::fetchColumn(int $column = 0): mixed

從結果集的下一列傳回單一欄位,如果沒有更多列,則傳回 false

注意事項:

不應使用 PDOStatement::fetchColumn() 來擷取布林值欄位,因為無法區分 false 的值和沒有更多列可擷取的情況。請改用 PDOStatement::fetch()

參數

column

您希望從列中擷取的欄位的 0 基底索引。如果未提供值,PDOStatement::fetchColumn() 會擷取第一個欄位。

傳回值

PDOStatement::fetchColumn() 會從結果集的下一列傳回單個欄位,如果沒有更多列,則傳回 false

警告

如果您使用 PDOStatement::fetchColumn() 來擷取資料,則無法從同一列傳回其他欄位。

錯誤/例外

如果屬性 PDO::ATTR_ERRMODE 設定為 PDO::ERRMODE_WARNING,則會發出等級為 E_WARNING 的錯誤。

如果屬性 PDO::ATTR_ERRMODE 設定為 PDO::ERRMODE_EXCEPTION,則會擲出 PDOException

範例

範例 #1 傳回下一列的第一個欄位

<?php
$sth
= $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

print
"從結果集的第一列擷取第一個欄位:\n";
$result = $sth->fetchColumn();
print
"name = $result\n";

print
"從結果集的第二列擷取第二個欄位:\n";
$result = $sth->fetchColumn(1);
print
"colour = $result\n";
?>

以上範例將輸出

Fetch the first column from the first row in the result set:
name = lemon
Fetch the second column from the second row in the result set:
colour = red

另請參閱

新增註解

使用者提供的註解 3 則註解

52
PhoneixSegovia at GOOGLE_MAIL_SERVER dot com
14 年前
當找不到資料列或沒有更多資料列時,fetchColumn 會回傳布林值 false。
11
seanferd at assmasterdonkeyranch dot com
17 年前
這是一個用於返回欄位計數的絕佳方法。例如

<?php
$db
= new PDO('mysql:host=localhost;dbname=pictures','user','password');
$pics = $db->query('SELECT COUNT(id) FROM pics');
$this->totalpics = $pics->fetchColumn();
$db = null;
?>
在我的例子中,$pics->fetchColumn() 返回 641,因為我的資料庫中有這麼多圖片。
0
theking2(at)king.ma
10 個月前
從 mysqli 遷移時,需要注意的是,mysqli_result::fetch_column 會迭代後續的資料列,而 PDOStatement::fetchColumn 不會!

<?php
while ( $row0 = $db->query("SELECT `value` FROM `bool`")->fetchColumn(0) ) {
var_dump( $row0 );
}
?>

除非表格 bool 的第一列第一行的值是 "0",否則這是一個無窮迴圈。
To Top