fetchColumn()

1. 定义

该方法从结果集的下一行获取指定列值。 如果结果集不存在或者没有更多值或者传入的列号不存在,将返回 FALSE。

2. 语法

PDOStatement::fetchColumn ([ int $column_number = 0 ] ) : string

3. 参数说明

参数 可选性 数据类型 描述
$column_number 可选 整型 列号,从零开始,默认为零,即如果不传任何参数将返回第一列的值

4. 示例

<?php

// PDOStatement::fetchColumn()
// 从结果集的下一行获取指定列值

try {
    $config = ['driver' => 'mysql', 'host' => 'localhost', 'dbname' => 'test', 'charset' => 'utf8', 'user' => 'root', 'pwd' => 'mysql'];
    $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s', $config['driver'], $config['host'], $config['dbname'], $config['charset']);
    $conn = new PDO($dsn, $config['user'], $config['pwd']);
} catch (PDOException $e) {
    error_log($e->getMessage());
    echo $e->getMessage();
}

try {
    $sql = 'SELECT `name`,`rate`,`cover`,`url` FROM `movie` WHERE `id` > 15 ORDER BY `id`';
    $stmt = $conn->prepare($sql);

    $stmt->execute();
    $res = $stmt->fetchColumn();// 获取下一行的第一列的列值:这里是 name
    var_dump($res);// 输出:string(12) "头号玩家"

    $res = $stmt->fetchColumn(0);// 获取下一行的第一列的列值:这里是 name
    var_dump($res);// 输出:string(12) "无名之辈"

    $res = $stmt->fetchColumn(2);// 获取下一行的第三列的列值:这里是 url
    var_dump($res);// 输出:string(73) "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p513344864.jpg"

    $stmt->fetchAll();// 此时结果集为空

    $res = $stmt->fetchColumn(20);// 获取下一行的第二十列的列值:这里不存在,Warning: PDOStatement::fetchColumn(): SQLSTATE[HY000]: General error: Invalid column index
    var_dump($res);// 输出:bool(false)
} catch (Exception $e) {
    echo "发生了错误:", $e->getMessage();
}

5. 延展阅读