PDOStatement::fetchColumn

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

PDOStatement::fetchColumn โ€” ็ตๆžœใ‚ปใƒƒใƒˆใฎๆฌก่กŒใ‹ใ‚‰ๅ˜ไธ€ใ‚ซใƒฉใƒ ใ‚’่ฟ”ใ™

่ชฌๆ˜Ž

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

็ตๆžœใ‚ปใƒƒใƒˆใฎๆฌก่กŒใ‹ใ‚‰ๅ˜ไธ€ใ‚ซใƒฉใƒ ใ‚’่ฟ”ใ—ใพใ™ใ€‚ ่กŒใŒใ‚‚ใ†ใชใ„ๅ ดๅˆใซใฏ false ใ‚’่ฟ”ใ—ใพใ™ใ€‚

ๆณจๆ„:

PDOStatement::fetchColumn() ใฏใ€boolean ใฎใ‚ซใƒฉใƒ ใ‚’ๅ–ๅพ—ใ™ใ‚‹ใจใใซไฝฟใฃใฆใ„ใ‘ใพใ›ใ‚“ใ€‚ boolean ๅ€คใจใ—ใฆใฎ false ใจใ€ใ‚‚ใ†ๅ–ๅพ—ใ™ใ‚‹่กŒใŒใชใ„ๅ ดๅˆใฎ 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
"Fetch the first column from the first row in the result set:\n";
$result = $sth->fetchColumn();
print
"name = $result\n";

print
"Fetch the second column from the second row in the result set:\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

ๅ‚่€ƒ

  • PDO::query() - ใƒ—ใƒฌใƒผใ‚นใƒ›ใƒซใƒ€ใ‚’ๆŒ‡ๅฎšใ›ใšใซใ€SQL ใ‚นใƒ†ใƒผใƒˆใƒกใƒณใƒˆใ‚’ๆบ–ๅ‚™ใ—ใฆๅฎŸ่กŒใ™ใ‚‹
  • PDOStatement::fetch() - ็ตๆžœใ‚ปใƒƒใƒˆใ‹ใ‚‰ๆฌกใฎ่กŒใ‚’ๅ–ๅพ—ใ™ใ‚‹
  • PDOStatement::fetchAll() - ็ตๆžœใ‚ปใƒƒใƒˆใ‹ใ‚‰ใ€ๆฎ‹ใฃใฆใ„ใ‚‹่กŒใ‚’ๅ–ๅพ—ใ™ใ‚‹
  • PDO::prepare() - ๆ–‡ใ‚’ๅฎŸ่กŒใ™ใ‚‹ๆบ–ๅ‚™ใ‚’่กŒใ„ใ€ๆ–‡ใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฟ”ใ™
  • PDOStatement::setFetchMode() - ใ“ใฎๆ–‡ใซๅฏพใ™ใ‚‹ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎใƒ•ใ‚งใƒƒใƒใƒขใƒผใƒ‰ใ‚’่จญๅฎšใ™ใ‚‹
๏ผ‹add a note

User Contributed Notes 3 notes

up
55
PhoneixSegovia at GOOGLE_MAIL_SERVER dot com ยถ
15 years ago
fetchColumn return boolean false when a row not is found or don't had more rows.
up
14
seanferd at assmasterdonkeyranch dot com ยถ
19 years ago
This is an excellent method for returning a column count. For example:

<?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;
?>
In my case $pics->fetchColumn() returns 641 because that is how many pictures I have in my db.
up
-2
theking2(at)king.ma ยถ
2 years ago
When migrating from mysqli it is important that while mysqli_result::fetch_column will iterate over subsequent rows  PDOStatement::fetchColumn will NOT!

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

is an endless loop unless the first column in the first row of the table bool is "0".