• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
PHP:mysql_unbuffered_query同mysql_query的区别
发布日期:2016-4-16 14:4:12

  PHP:mysql_unbuffered_query同mysql_query的区别

  对mysql_query相信大家都很熟悉,下面我们简单介绍下mysql_unbuffered_query

  1.mysql_unbuffered_query

  (PHP 4 >= 4.0.6, PHP 5)mysql_unbuffered_query -- 向 MySQL 发送一条 SQL 查询,并不获取与缓存结果的行

  注释:resource mysql_unbuffered_query ( string query [, resource link_identifier] )

  mysql_unbuffered_query() 向 MySQL 发送一条 SQL 查询 query,但是不像 mysql_query() 那样自动获取和缓存结果集。原因是:

  •     这在处理很大的结果集时会节省可观的内存。
  •     可以在获取第一行后立即对结果集进行操作,不用等到整个 SQL 语句都执行完毕。当使用多个数据库连接的时候,必须指定可选参数 link_identifier。

  请注意: 虽然mysql_unbuffered_query() 有好处是,但同时也是有代价的:

  •     在 mysql_unbuffered_query() 返回的结果集之上不能使用 mysql_num_rows() 与 mysql_data_seek()。
  •     在向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。

  以上是mysql_unbuffered_query 在php手册中的解释,在网上查了很多对手册中已有的解释,按照给的解释,做了个实例供大家参考,代码如下所示:

  [php] view plaincopy$link = mysql_connect('localhost','root','pwd');

  mysql_select_db('dbname');

  $sql = "SELECT * FROM tablename";

  /*注意以下两个$result,如果用mysql_query(),那么mysql_data_seek()函数将起作用,因为查询结果缓存了,如果用

  mysql_unbuffered_query()函数,那么mysql_data_seek()不起作用,正如它在手册中的解释,不缓存。*/

  $result = mysql_unbuffered_query($sql,$link);

  //$result = mysql_query($sql,$link);

  while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

  printf ("ID: %s Name: %s", $row[0], $row[1]);

  }

  mysql_data_seek($result,0);

  while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

  printf ("ID: %s Name: %s", $row[0], $row[1]);

  }

  mysql_free_result($result);"