fetchColumn return boolean false when a row not is found or don't had more rows.(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
PDOStatement::fetchColumn โ ็ตๆใปใใใฎๆฌก่กใใๅไธใซใฉใ ใ่ฟใ
็ตๆใปใใใฎๆฌก่กใใๅไธใซใฉใ ใ่ฟใใพใใ
่กใใใใชใๅ ดๅใซใฏ 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
fetchColumn return boolean false when a row not is found or don't had more rows.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.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".