脑动力:PHP函数速查效率手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.2 mysql_unbuffered_query函数:向MySQL发送一条SQL查询,并不获取和缓存结果集

【功能说明】

该函数将向指定成功连接的MySQL服务器发送一条SQL执行语句。该函数发送执行的SQL语句后,并不自动获取和缓存得到的结果集。这样的作用是当执行发送的SQL语句后,获得了一个数据非常庞大的结果集时,就会节省很大的内存空间。由于该函数不自动获取和缓存数据,当得到结果集中的第一条数据时,就可以立即对结果集进行操作,而没有必要将整个SQL语句都执行完再操作。要想自动获取和缓存结果集数据,就使用函数mysql_query()来实现。

:该函数不自动获取和缓存结果集是一个优点,但这也是有局限性的,该函数执行得到的结果集,不能使用在函数mysql_num_rows()和mysql_data_seek()上。还有一个弊端就是,当向MySQL服务器发送一条新的SQL语句之前,必须提取没有缓存的执行SQL语句返回的结果集。

【函数语法】

resource mysql_unbuffered_query(string query[,resource link_identifier])

其中,参数query是指定执行的SQL语句;可选参数link_identifier是指定成功连接MySQL服务器的连接标识符,当程序成功连接到多个MySQL服务器时,必须要指定该参数的值。该函数的返回值为resource。

【示例程序】下面使用本例函数不自动获取和缓存结果集的执行SQL语句。代码如下:

<?php
    //打开一个非持久的MySQL服务器的连接
    $link = mysql_connect("localhost", "root", "123456")or die("connection error: ".mysql_error());
    mysql_select_db("project",$link);
                            //通过打开的连接选择数据库
    $sql = "select * from language";
                            //书写SQL语句,查询数据表中的字段
    $result = mysql_unbuffered_query($sql,$link);
    //不获取和缓存结果的执行一条SQL语句
    echo $result;           //输出返回的结果
    mysql_close($link);    //关闭打开的连接
?>

以上代码的运行结果如图1.6所示。

图1.6 运行结果

上述代码中,成功连接了指定的MySQL服务器之后,使用了代码语句$result = mysql_unbuffered_query($sql,$link);在连接成功的通道上,不自动获取和缓存结果集的执行了一条SQL语句$sql。该函数返回的数据变量$result是资源型数据,返回的值是Resource id #3。