函数名称:PDOStatement::setFetchMode()
适用版本:PHP 5 >= 5.1.0, PHP 7, PHP 8
函数描述:这个方法设置PDOStatement对象的默认获取模式。
用法: PDOStatement::setFetchMode(int $mode): bool PDOStatement::setFetchMode(int $mode, mixed $arg1): bool PDOStatement::setFetchMode(int $mode, mixed $arg1, mixed $arg2): bool
参数:
$mode(必需):指定获取模式的常量值。可以是以下之一:
- PDO::FETCH_ASSOC:返回一个索引为列名的关联数组。
- PDO::FETCH_BOTH:返回一个索引既为列名又为列号的关联数组。
- PDO::FETCH_BOUND:将结果中的列值绑定到通过bindColumn()方法绑定的变量上。
- PDO::FETCH_CLASS:返回一个指定类名的新实例,属性名对应列名。
- PDO::FETCH_INTO:将结果中的列值绑定到已存在的对象的属性上。
- PDO::FETCH_LAZY:创建关联数组,只有在访问时才获取数据。
- PDO::FETCH_NUM:返回一个索引为列号的数组。
- PDO::FETCH_OBJ:返回一个匿名对象,属性名对应列名。
$arg1(可选):根据不同的获取模式,可以是额外的参数。例如,在PDO::FETCH_CLASS模式下,$arg1是要实例化的类名。
$arg2(可选):根据不同的获取模式,可以是额外的参数。例如,在PDO::FETCH_INTO模式下,$arg2是要绑定到的对象。
返回值:如果成功设置了获取模式,则返回true;否则返回false。
示例:
// 创建一个PDO连接
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'root';
$password = 'password';
$pdo = new PDO($dsn, $username, $password);
// 准备SQL语句并执行
$stmt = $pdo->prepare('SELECT id, name FROM users');
$stmt->execute();
// 设置获取模式为关联数组
$stmt->setFetchMode(PDO::FETCH_ASSOC);
// 使用fetch()方法获取结果
while ($row = $stmt->fetch()) {
echo $row['id'] . ': ' . $row['name'] . '<br>';
}
// 设置获取模式为对象
$stmt->setFetchMode(PDO::FETCH_OBJ);
// 使用fetchObject()方法获取结果
while ($user = $stmt->fetchObject()) {
echo $user->id . ': ' . $user->name . '<br>';
}
在上面的示例中,我们首先创建了一个PDO连接。然后,我们准备并执行了一个SELECT语句。接下来,我们使用setFetchMode()
方法将获取模式设置为关联数组(PDO::FETCH_ASSOC
),然后使用fetch()
方法获取结果并打印出来。然后,我们将获取模式设置为对象(PDO::FETCH_OBJ
),并使用fetchObject()
方法获取结果并打印出来。