# mysql_unbuffered_query

(PHP 4 >= 4.0.6, PHP 5)

mysql_unbuffered_query — 向 MySQL 发送 SQL 查询，无需获取和缓冲结果行

警告

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南来获取更多信息。用以替代本函数的有：

- 参阅：缓冲和非缓冲查询

### 说明

mysql_unbuffered_query(string `$query`, resource `$link_identifier` = NULL): resource

mysql_unbuffered_query() 将 SQL `query` 发送到 MySQL，而不像 mysql_query() 那样自动获取和缓冲结果行。对于生成大型结果集的 SQL 查询，这可以节省大量内存，并且可以在检索第一行后立即开始处理结果集，因为不必等到执行完整的 SQL 查询。要在打开多个数据库连接时使用 mysql_unbuffered_query()，必须指定可选参数 `link_identifier` 来标识要使用哪个连接。

### 参数

`query`
  要执行的 SQL 查询。 查询中的数据应正确转义。
`link_identifier`

  MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 `E_WARNING` 级别的错误。

### 返回值

对于 SELECT、SHOW、DESCRIBE 或 EXPLAIN 语句，mysql_unbuffered_query() 在成功时返回 resource，错误时返回 `false`。

对于其他类型的 SQL 语句，UPDATE、DELETE、DROP 等，mysql_unbuffered_query() 在成功时返回 `true`，在错误时返回 `false`。

### 注释

> 注意: mysql_unbuffered_query() 的好处是有代价的：在获取所有行之前，不能对 mysql_unbuffered_query() 返回的结果集使用 mysql_num_rows() 和 mysql_data_seek()。还必须使用相同的 `link_identifier` 从无缓冲的 SQL 查询中获取所有结果行，然后才能将新的 SQL 查询发送到 MySQL。

### 参见

- mysql_query() - 发送一条 MySQL 查询

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open