fetchColumn return boolean false when a row not is found or don't had more rows.
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.9.0)
PDOStatement::fetchColumn — Returns a single column from the next row of a result set
Returns a single column from the next row of a result set or FALSE
if
there are no more rows.
Note:
PDOStatement::fetchColumn() should not be used to retrieve boolean columns, as it is impossible to distinguish a value of
FALSE
from there being no more rows to retrieve. Use PDOStatement::fetch() instead.
column_number
0-indexed number of the column you wish to retrieve from the row. If no value is supplied, PDOStatement::fetchColumn() fetches the first column.
PDOStatement::fetchColumn() returns a single column in the next row of a result set.
There is no way to return another column from the same row if you use PDOStatement::fetchColumn() to retrieve data.
Example #1 Return first column of the next row
<?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");
?>
The above example will output:
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.
It looks like the example may be saying it is fetching the second column from the NEXT row, not the same one that returned 'lemon' for name. The warning message says you can't return another column from the SAME row after fetchColumn().