fyre/db

数据库库。

v4.1.3 2024-08-18 05:31 UTC

README

FyreDB是一个免费的、开源的PHP数据库库。

目录

安装

使用Composer

composer require fyre/db

在PHP中

use Fyre\DB\ConnectionManager;

方法

清除

清除并关闭连接。

ConnectionManager::clear();

获取配置

设置连接配置。

  • $key是一个表示连接键的字符串。
$config = ConnectionManager::getConfig($key);

或者,如果省略了$key参数,将返回包含所有配置的数组。

$config = ConnectionManager::getConfig();

获取键

获取连接实例的键。

  • $connection是一个连接
$key = ConnectionManager::getKey($connection);

检查配置

检查是否存在连接配置。

  • $key是一个表示连接键的字符串,默认为ConnectionManager::DEFAULT
$hasConfig = ConnectionManager::hasConfig($key);

检查是否已加载

检查连接实例是否已加载。

  • $key是一个表示连接键的字符串,默认为ConnectionManager::DEFAULT
$isLoaded = ConnectionManager::isLoaded($key);

加载

加载一个连接

  • $options是一个包含配置选项的数组。
$connection = ConnectionManager::load($options);

设置配置

设置连接配置。

  • $key是一个表示连接键的字符串。
  • $options是一个包含配置选项的数组。
ConnectionManager::setConfig($key, $options);

或者,可以提供一个包含配置选项键/值的单个数组。

ConnectionManager::setConfig($config);

卸载

卸载一个连接

  • $key是一个表示连接键的字符串,默认为ConnectionManager::DEFAULT
$unloaded = ConnectionManager::unload($key);

使用

加载一个共享的连接实例。

  • $key是一个表示连接键的字符串,默认为ConnectionManager::DEFAULT
$connection = ConnectionManager::use($key);

连接

您可以通过指定上面$options变量的className选项来加载特定的连接处理程序。

可以通过扩展\Fyre\DB\Connection创建自定义连接处理程序,确保实现以下所有方法。

自定义处理程序还应实现一个返回新QueryGenerator(如果需要)的generator方法,以及一个返回用于结果的类名的静态方法resultSetClass

受影响的行

获取受影响的行数。

$affectedRows = $connection->affectedRows();

开始

开始一个事务。

$connection->begin();

提交

提交一个事务。

$connection->commit();

连接

连接到数据库。

$connection->connect();

当创建连接时自动调用此方法。

删除

创建一个删除查询

  • $alias是一个包含要删除的表别名的字符串或数组,默认为null
$query = $connection->delete($alias);

断开连接

从数据库断开连接。

$connection->disconnect();

执行

使用绑定参数执行SQL查询。

  • $sql是一个表示SQL查询的字符串。
  • $params是一个包含绑定参数的数组。
$result = $connection->execute($sql, $params);

SQL查询可以使用?作为占位符(用于数字索引的参数),或者使用前缀为:的数组键。

此方法将返回SELECT查询的结果集。其他查询类型将返回布尔值。

获取字符集

获取连接字符集。

$charset = $connection->getCharset();

获取错误

获取最后一个连接错误。

$error = $connection->getError();

事务中

确定事务是否正在进行。

$inTransaction = $connection->inTransaction();

插入

创建一个InsertQuery

$query = $connection->insert();

从...插入

创建一个InsertFromQuery

  • $from是一个闭包SelectQueryQueryLiteral或表示查询的字符串。
  • $columns是列名数组。
$query = $connection->insertFrom($from, $columns);

插入ID

获取最后一个插入的ID。

$id = $connection->insertId();

在进行批量插入时,此方法将返回MySQL连接的第一个ID,以及Postgres和Sqlite的最后一个ID。

文本

创建一个QueryLiteral

  • $string是表示文本字符串的字符串。
$literal = $connection->literal($string);

查询

执行SQL查询。

  • $sql是一个表示SQL查询的字符串。
$result = $connection->query($sql);

此方法将返回SELECT查询的结果集。其他查询类型将返回布尔值。

引用

引用SQL查询中使用的字符串。

  • $value是表示要引用的值的字符串。
$quoted = $connection->quote($value);

替换

创建一个ReplaceQuery

$query = $connection->replace();

此方法仅支持使用MysqlConnectionSqliteConnection的查询。

回滚

回滚事务。

$connection->rollback();

选择

创建一个SelectQuery

  • $fields是表示要选择的字段数组或字符串,默认为"*"。
$query = $connection->select($fields);

非数字数组键将用作字段别名。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

设置字符集

设置连接字符集。

  • $charset是表示连接字符集的字符串。
$connection->setCharset($charset);

事务性

在数据库事务内执行回调。

  • $callback是在事务内执行的闭包
$result = $connection->transactional($callback);

如果回调返回false或抛出Exception,则事务将回滚,否则将提交。

更新

创建一个UpdateQuery

  • $table是表示表(s)的数组或字符串。
$query = $connection->update($table);

非数字数组键将用作表别名。

批量更新

创建一个UpdateBatchQuery

  • $table是表示表(s)的数组或字符串。
$query = $connection->updateBatch($table);

非数字数组键将用作表别名。

版本

获取服务器版本。

$version = $connection->version();

MySQL

可以使用自定义配置加载MySQL连接。

  • $key是表示连接键的字符串。
  • $options是一个包含配置选项的数组。
    • className必须设置为\Fyre\DB\Handlers\Mysql\MysqlConnection
    • host是表示MySQL主机的字符串,默认为"127.0.0.1"。
    • username是表示MySQL用户名的字符串。
    • password是表示MySQL密码的字符串。
    • database是表示MySQL数据库的字符串。
    • port是表示MySQL端口的数字,默认为3306
    • collation是表示校对的字符串,默认为"utf8mb4_unicode_ci"。
    • charset是表示字符集的字符串,默认为"utf8mb4"。
    • compress是表示是否启用压缩的布尔值,默认为false
    • persist是表示是否使用持久连接的布尔值,默认为false
    • timeout是表示连接超时的数字。
    • ssl是包含SSL选项的数组。
      • key是表示密钥文件路径的字符串。
      • cert是表示证书文件路径的字符串。
      • ca 是表示证书颁发机构文件路径的字符串。
      • capath 是表示包含 CA 证书的目录路径的字符串。
      • cipher 是表示用于加密的可允许密码列表的字符串。
    • flags 是包含 PDO 连接选项的数组。
ConnectionManager::setConfig($key, $options);

$connection = ConnectionManager::use($key);

获取校对

获取连接校对。

$collation = $connection->getCollation();

Postgres

可以使用自定义配置加载 Postgres 连接。

  • $key是表示连接键的字符串。
  • $options是一个包含配置选项的数组。
    • className 必须设置为 \Fyre\DB\Handlers\Postgres\PostgresConnection
    • host 是表示 Postgres 主机的字符串,默认为 "127.0.0.1"。
    • username 是表示 Postgres 用户名的字符串。
    • password 是表示 Postgres 密码的字符串。
    • database 是表示 Postgres 数据库的字符串。
    • port 是表示 Postgres 端口的数字,默认为 5432
    • charset 是表示字符集的字符串,默认为 "utf8"。
    • schema 是表示模式集的字符串,默认为 "public"。
    • persist是表示是否使用持久连接的布尔值,默认为false
    • timeout是表示连接超时的数字。
    • flags 是包含 PDO 连接选项的数组。
ConnectionManager::setConfig($key, $options);

$connection = ConnectionManager::use($key);

设置模式

设置连接模式。

  • $schema 是表示连接模式的字符串。
$connection->setSchema($schema);

Sqlite

可以使用自定义配置加载 Sqlite 连接。

  • $key是表示连接键的字符串。
  • $options是一个包含配置选项的数组。
    • className 必须设置为 \Fyre\DB\Handlers\Sqlite\SqliteConnection
    • database 是表示 Sqlite 数据库文件的字符串,默认为 ":memory:"。
    • mask 是表示数据库文件权限的数字,默认为 0644。
    • cache 是表示缓存标志的字符串。
    • mode 是表示模式标志的字符串。
    • persist是表示是否使用持久连接的布尔值,默认为false
    • flags 是包含 PDO 连接选项的数组。
ConnectionManager::setConfig($key, $options);

$connection = ConnectionManager::use($key);

查询

\Fyre\DB\Query 类提供了与构建查询相关的基类方法,并由下述查询类型类扩展。

执行

执行查询。

$result = $query->execute();

此方法将返回SELECT查询的结果集。其他查询类型将返回布尔值。

连接

获取 连接

$connection = $query->getConnection();

获取表

获取表(们)。

$table = $query->getTable();

SQL

生成 SQL 查询。

$sql = $query->sql();

设置表(们)。

  • $table是表示表(s)的数组或字符串。
  • $overwrite 是一个布尔值,指示是否覆盖现有表,默认为 false
$query->table($table, $overwrite);

非数字数组键将用作表别名。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以将 Closure 作为数组值提供,其中第一个参数将是 Connection

删除

\Fyre\DB\Queries\DeleteQuery 类扩展了 查询 类,同时提供执行 DELETE 查询的额外方法。

$connection
    ->delete($alias)
    ->from($table)
    ->where($conditions)
    ->execute();

仅支持在 MysqlConnection 用于查询的多表。

别名

设置删除别名(们)。

  • $alias是一个包含要删除的表别名的字符串或数组,默认为null
  • $overwrite 是一个布尔值,指示是否覆盖现有别名,默认为 false
$query->alias($alias, $overwrite);

此方法仅支持使用 MysqlConnection 的查询。

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

From

设置 FROM 表。

  • $table是表示表(s)的数组或字符串。
  • $overwrite 是一个布尔值,指示是否覆盖现有表,默认为 false
$query->from($table, $overwrite);

非数字数组键将用作表别名。

获取别名

获取删除别名(们)。

$alias = $query->getAlias();

获取结束语

获取结束语。

$epilog = $query->getEpilog();

获取 From

获取 FROM 表。

$table = $query->getFrom();

获取 Join

获取 JOIN 表。

$joins = $query->getJoin();

获取 Limit

获取 LIMIT 子句。

$limit = $query->getLimit();

获取 Order By

获取 ORDER BY 字段。

$orderBy = $query->getOrderBy();

获取 Using

获取 USING 表。

$table = $query->getUsing();

获取 Where

获取 WHERE 条件。

$conditions = $query->getWhere();

Join

设置 JOIN 表。

  • $joins 是连接的二维数组。
  • $overwrite 是一个布尔值,指示是否覆盖现有连接,默认为 false
$query->join($joins, $overwrite);

每个连接数组可以包含一个 tablealiastype 和一个表示 conditions 的数组。如果未指定 type,则默认为 INNER。

此方法仅支持使用 MysqlConnection 的查询。

Limit

设置 LIMIT 子句。

  • $limit 是表示查询限制的数字。
$query->limit($limit);

Order By

设置 ORDER BY 字段。

  • $fields 是表示要排序的字段的数组或字符串。
  • $overwrite是一个布尔值,表示是否覆盖现有字段,默认为false
$query->orderBy($fields, $overwrite);

使用

设置USING表。

  • $table是一个数组或字符串,表示使用表。
  • $overwrite是一个布尔值,表示是否覆盖现有的使用表,默认为false
$query->using($table, $overwrite);

此方法仅支持使用PostgresConnection的查询。

WHERE

设置WHERE条件。

  • $conditions是一个数组或字符串,表示WHERE条件。
  • $overwrite是一个布尔值,表示是否覆盖现有的条件,默认为false
$query->where($conditions, $overwrite);

数组条件可以包含

  • 数字键的文本值。
  • 键/值对,其中键是字段(和比较运算符),而值将被转义。
  • 包含一组条件的数组值。除非数组键是"OR"或"NOT",否则它们将使用AND运算符连接。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

插入

\Fyre\DB\Queries\InsertQuery类扩展了Query类,同时提供了执行INSERT查询的额外方法。

$connection
    ->insert()
    ->into($table)
    ->values($values)
    ->execute();

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

获取结束语

获取结束语。

$epilog = $query->getEpilog();

获取INTO

获取INTO表。

$table = $query->getInto();

获取值

获取REPLACE数据。

$values = $query->getValues();

INTO

设置INTO表。

  • $table是一个字符串,表示表。
  • $overwrite 是一个布尔值,指示是否覆盖现有表,默认为 false
$query->into($table, $overwrite);

  • $values是一个二维数组,表示要插入的值。
  • $overwrite是一个布尔值,表示是否覆盖现有数据,默认为false
$query->values($values, $overwrite);

数组键将用于列名,而值将自动转义。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

从...插入

\Fyre\DB\Queries\InsertFromQuery类扩展了Query类,同时提供了从SELECT查询执行INSERT查询的额外方法。

$connection
    ->insertFrom($from, $columns)
    ->into($table)
    ->execute();

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

获取结束语

获取结束语。

$epilog = $query->getEpilog();

获取INTO

获取INTO表。

$table = $query->getInto();

INTO

设置INTO表。

  • $table是一个字符串,表示表。
  • $overwrite 是一个布尔值,指示是否覆盖现有表,默认为 false
$query->into($table, $overwrite);

替换

\Fyre\DB\Queries\ReplaceQuery类扩展了Query类,同时提供了执行REPLACE查询的额外方法。

$connection
    ->replace()
    ->into($table)
    ->values($values)
    ->execute();

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

获取结束语

获取结束语。

$epilog = $query->getEpilog();

获取INTO

获取INTO表。

$table = $query->getInto();

获取值

获取REPLACE数据。

$values = $query->getValues();

INTO

设置INTO表。

  • $table是一个字符串,表示表。
  • $overwrite 是一个布尔值,指示是否覆盖现有表,默认为 false
$query->into($table, $overwrite);

  • $values是一个二维数组,表示要插入的值。
  • $overwrite是一个布尔值,表示是否覆盖现有数据,默认为false
$query->values($values, $overwrite);

数组键将用于列名,而值将自动转义。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

选择

\Fyre\DB\Queries\SelectQuery类扩展了Query类,同时提供了执行SELECT查询的额外方法。

$results = $connection
    ->select($fields)
    ->from($table)
    ->where($conditions)
    ->execute();

Distinct

设置DISTINCT子句。

  • $distinct是一个布尔值,表示是否将查询设置为DISTINCT,默认为true
$query->distinct($distinct);

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

Except

添加EXCEPT查询。

  • $union是一个ClosureSelectQueryQueryLiteral或表示查询的字符串。
  • $overwrite是一个布尔值,表示是否覆盖现有的联合查询,默认为false
$query->except($union, $overwrite);

From

设置 FROM 表。

  • $table是表示表(s)的数组或字符串。
  • $overwrite 是一个布尔值,指示是否覆盖现有表,默认为 false
$query->from($table, $overwrite);

非数字数组键将用作表别名。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以将 Closure 作为数组值提供,其中第一个参数将是 Connection

获取Distinct

获取DISTINCT子句。

$distinct = $query->getDistinct();

获取结束语

获取结束语。

$epilog = $query->getEpilog();

获取Group By

获取GROUP BY字段。

$groupBy = $query->getGroupBy();

获取 From

获取 FROM 表。

$table = $query->getFrom();

获取Having

获取HAVING条件。

$having = $query->getHaving();

获取 Join

获取 JOIN 表。

$joins = $query->getJoin();

获取 Limit

获取 LIMIT 子句。

$limit = $query->getLimit();

获取Offset

获取OFFSET子句。

$offset = $query->getOffset();

获取 Order By

获取 ORDER BY 字段。

$orderBy = $query->getOrderBy();

获取Select

获取SELECT字段。

$fields = $query->getSelect();

获取Union

获取UNION查询。

$unions = $query->getUnion();

获取 Where

获取 WHERE 条件。

$conditions = $query->getWhere();

获取With

获取WITH查询。

$with = $query->getWith();

Group By

设置GROUP BY字段。

  • $fields是一个数组或字符串,表示要按字段分组。
  • $overwrite是一个布尔值,表示是否覆盖现有字段,默认为false
$query->groupBy($fields, $overwrite);

Having

设置HAVING条件。

  • $conditions是一个数组或字符串,表示HAVING条件。
  • $overwrite是一个布尔值,表示是否覆盖现有的条件,默认为false
$query->having($conditions, $overwrite);

数组条件可以包含

  • 数字键的文本值。
  • 键/值对,其中键是字段(和比较运算符),而值将被自动转义。
  • 包含一组条件的数组值。除非数组键是"OR"或"NOT",否则它们将使用AND运算符连接。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

Intersect

添加INTERSECT查询。

  • $union是一个ClosureSelectQueryQueryLiteral或表示查询的字符串。
  • $overwrite是一个布尔值,表示是否覆盖现有的联合查询,默认为false
$query->intersect($union, $overwrite);

Join

设置 JOIN 表。

  • $joins 是连接的二维数组。
  • $overwrite 是一个布尔值,指示是否覆盖现有连接,默认为 false
$query->join($joins, $overwrite);

每个连接数组可以包含一个 tablealiastype 和一个表示 conditions 的数组。如果未指定 type,则默认为 INNER。

Limit

设置LIMIT和OFFSET子句。

  • $limit 是表示查询限制的数字。
  • $offset是一个表示查询偏移量的数字。
$query->limit($limit, $offset);

Offset

设置OFFSET子句。

  • $offset是一个表示查询偏移量的数字。
$query->offset($offset);

Order By

设置 ORDER BY 字段。

  • $fields 是表示要排序的字段的数组或字符串。
  • $overwrite是一个布尔值,表示是否覆盖现有字段,默认为false
$query->orderBy($fields, $overwrite);

选择

设置SELECT字段。

  • $fields是表示要选择的字段数组或字符串,默认为"*"。
  • $overwrite是一个布尔值,表示是否覆盖现有字段,默认为false
$query->select($fields, $overwrite);

非数字数组键将用作字段别名。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

Union

添加UNION DISTINCT查询。

  • $union是一个ClosureSelectQueryQueryLiteral或表示查询的字符串。
  • $overwrite是一个布尔值,表示是否覆盖现有的联合查询,默认为false
$query->union($union, $overwrite);

Union All

添加UNION ALL查询。

  • $union是一个ClosureSelectQueryQueryLiteral或表示查询的字符串。
  • $overwrite是一个布尔值,表示是否覆盖现有的联合查询,默认为false
$query->unionAll($union, $overwrite);

WHERE

设置WHERE条件。

  • $conditions是一个数组或字符串,表示WHERE条件。
  • $overwrite是一个布尔值,表示是否覆盖现有的条件,默认为false
$query->where($conditions, $overwrite);

数组条件可以包含

  • 数字键的文本值。
  • 键/值对,其中键是字段(和比较运算符),而值将被转义。
  • 包含一组条件的数组值。除非数组键是"OR"或"NOT",否则它们将使用AND运算符连接。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

With

设置WITH子句。

  • $with是一个常见表表达式数组。
  • $overwrite是一个布尔值,表示是否覆盖现有的表达式,默认为false
$query->with($with, $overwrite);

数组键将用作表别名。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以将 Closure 作为数组值提供,其中第一个参数将是 Connection

With Recursive

设置WITH RECURSIVE子句。

  • $with是一个常见表表达式数组。
  • $overwrite是一个布尔值,表示是否覆盖现有的表达式,默认为false
$query->withRecursive($with, $overwrite);

数组键将用作表别名。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以将 Closure 作为数组值提供,其中第一个参数将是 Connection

更新

\Fyre\DB\Queries\UpdateQuery 类扩展了 Query 类,同时提供了执行 UPDATE 查询的额外方法。

$connection
    ->update($table)
    ->set($data)
    ->where($conditions)
    ->execute();

仅支持在 MysqlConnection 用于查询的多表。

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

From

设置 FROM 表。

  • $table 是一个数组或字符串,代表要从中查询的表。
  • $overwrite 是一个布尔值,表示是否覆盖现有的 FROM 表,默认为 false
$query->from($table, $overwrite);

此方法仅支持使用 PostgresConnectionSqliteConnection 的查询。

获取数据

获取 UPDATE 数据。

$data = $query->getData();

获取结束语

获取结束语。

$epilog = $query->getEpilog();

获取 From

获取 FROM 表。

$table = $query->getFrom();

获取 Join

获取 JOIN 表。

$joins = $query->getJoin();

获取 Where

获取 WHERE 条件。

$conditions = $query->getWhere();

Join

设置 JOIN 表。

  • $joins 是连接的二维数组。
  • $overwrite 是一个布尔值,指示是否覆盖现有连接,默认为 false
$query->join($joins, $overwrite);

每个连接数组可以包含一个 tablealiastype 和一个表示 conditions 的数组。如果未指定 type,则默认为 INNER。

此方法仅支持使用 MysqlConnection 的查询。

设置

  • $data 是一个要更新的值的数组。
  • $overwrite是一个布尔值,表示是否覆盖现有数据,默认为false
$query->set($data, $overwrite);

数组键将用于列名,而值将自动转义。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

WHERE

设置WHERE条件。

  • $conditions是一个数组或字符串,表示WHERE条件。
  • $overwrite是一个布尔值,表示是否覆盖现有的条件,默认为false
$query->where($conditions, $overwrite);

数组条件可以包含

  • 数字键的文本值。
  • 键/值对,其中键是字段(和比较运算符),而值将被转义。
  • 包含一组条件的数组值。除非数组键是"OR"或"NOT",否则它们将使用AND运算符连接。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

批量更新

\Fyre\DB\Queries\UpdateBatchQuery 类扩展了 Query 类,同时提供了执行批量 UPDATE 查询的额外方法。

$connection
    ->updateBatch($table)
    ->set($data, $keys)
    ->execute();

结束语

设置结束语。

  • $epilog 是表示查询结束语的字符串。
$query->epilog($epilog);

获取数据

获取 UPDATE 数据。

$data = $query->getData();

获取结束语

获取结束语。

$epilog = $query->getEpilog();

设置

  • $data 是一个二维数组,包含要更新的值。
  • $keys 是一个包含用于更新的键的字符串或数组。
  • $overwrite是一个布尔值,表示是否覆盖现有数据,默认为false
$query->set($data, $keys, $overwrite);

数组键将用于列名,而值将自动转义。

如果提供了一个SelectQueryQueryLiteral作为数组值,它们将被转换为字符串并且不会转义。

也可以提供一个闭包作为数组值,其中第一个参数是Connection,第二个参数是ValueBinder

结果

SELECT 查询将返回一个包含查询结果的新 ResultSet

ResultSet 是一个 Iterator 的实现,可以在 foreach 循环中使用。

foreach ($result AS $row) { }

所有

以数组形式获取结果。

$array = $result->all();

清除缓冲区

从缓冲区中清除结果。

$result->clearBuffer();

列数

获取列数。

$columnCount = $result->columnCount();

获取结果列。

$columns = $result->columns();

计数

获取结果计数。

$count = $result->count();

获取

按索引获取结果。

  • $index 是一个表示行索引的数字。
$row = $result->fetch($index);

第一个

获取第一个结果。

$first = $result->first();

释放

从内存中释放结果。

$result->free();

获取类型

获取列的 类型 解析器。

  • $name 是一个表示列名的字符串。
$parser = $result->getType($name);

最后一个

获取最后一个结果。

$last = $result->last();