函数名:mysqli_stmt::attr_set()
适用版本:PHP 8.0.0 及以上版本
用法:该方法用于设置预处理语句对象的属性。
语法:bool mysqli_stmt::attr_set(int $attr, mixed $mode)
参数:
- $attr:表示要设置的属性,可以是以下常量之一:
- MYSQLI_STMT_ATTR_CURSOR_TYPE:设置预处理语句的游标类型。可选值包括:
- MYSQLI_CURSOR_TYPE_NO_CURSOR:不使用游标。
- MYSQLI_CURSOR_TYPE_READ_ONLY:只读游标。
- MYSQLI_CURSOR_TYPE_FOR_UPDATE:可更新游标。
- MYSQLI_CURSOR_TYPE_SCROLLABLE:可滚动游标。
- MYSQLI_STMT_ATTR_PREFETCH_ROWS:设置预处理语句的预取行数。可选值为正整数。
- MYSQLI_STMT_ATTR_CURSOR_TYPE:设置预处理语句的游标类型。可选值包括:
- $mode:表示要设置的属性的值。
返回值:成功时返回 true,失败时返回 false。
示例:
// 创建数据库连接
$mysqli = new mysqli("localhost", "username", "password", "database");
// 准备预处理语句
$stmt = $mysqli->prepare("SELECT id, name FROM my_table WHERE age > ?");
// 设置预处理语句的游标类型为可滚动游标
$stmt->attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_TYPE_SCROLLABLE);
// 设置预处理语句的预取行数为 100
$stmt->attr_set(MYSQLI_STMT_ATTR_PREFETCH_ROWS, 100);
// 绑定参数并执行查询
$age = 18;
$stmt->bind_param("i", $age);
$stmt->execute();
// 获取结果集
$result = $stmt->get_result();
// 遍历结果集并输出数据
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}
// 关闭预处理语句和数据库连接
$stmt->close();
$mysqli->close();
以上示例中,我们首先创建了一个数据库连接对象 $mysqli,并使用该对象准备了一个预处理语句 $stmt。然后,我们使用 mysqli_stmt::attr_set() 方法分别设置了预处理语句的游标类型为可滚动游标和预取行数为 100。接下来,我们绑定参数并执行了查询,然后通过获取结果集并遍历输出了查询结果。最后,我们关闭了预处理语句和数据库连接。
请注意,使用 mysqli_stmt::attr_set() 方法之前必须先准备好预处理语句对象。