當找不到資料列或沒有更多資料列時,fetchColumn 會回傳布林值 false。
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
PDOStatement::fetchColumn — 從結果集的下一列傳回單一欄位
從結果集的下一列傳回單一欄位,如果沒有更多列,則傳回 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
這是一個用於返回欄位計數的絕佳方法。例如
<?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,因為我的資料庫中有這麼多圖片。
從 mysqli 遷移時,需要注意的是,mysqli_result::fetch_column 會迭代後續的資料列,而 PDOStatement::fetchColumn 不會!
<?php
while ( $row0 = $db->query("SELECT `value` FROM `bool`")->fetchColumn(0) ) {
var_dump( $row0 );
}
?>
除非表格 bool 的第一列第一行的值是 "0",否則這是一個無窮迴圈。