php函数返回结果集

时间:2014-08-16 14:27:34

标签: php mysql resultset

我有一个php类来处理下面给出的MySql数据

<?php

class DB_Functions
{

    function __construct()
    {   
        require_once 'DB_Connect.php';
        $db=new DB_Connect();
        $db->connect();
    }
    function __destruct()
    {

    }
    public function getDetails($username,$password)
    {
        $result = mysql_query("Select * from teachertb where Username = '$username' and password = '$password'") or die(mysql_error());
        $no_of_rows = mysql_num_rows($result);
        if($no_of_rows>0)
        {
            return $result;
        }       
        else
        {
            return false;
        }
    }
    public function getClass($res)
    {
        while($r=mysql_fetch_array($res))
        {   
            echo $r[0]."<br>";
            echo $r[1]."<br>";
            echo $r[2]."<br>";
            echo $r[3]."<br>";
        }
    }
}
$d=new DB_Functions();
$res=$d->getDetails("abcd","abcd");
$d->getClass($res);
while($r=mysql_fetch_array($res))
{   
    echo $r[0]."<br>";
    echo $r[1]."<br>";
    echo $r[2]."<br>";
    echo $r[3]."<br>";
}
?>

在这段代码中,实际上我想使用结果集来显示表中的数据,并在另一个函数中使用相同的结果集来使用数据执行其他功能。 但我注意到相同的结果集不能使用多次。为什么会这样? 我怎样才能多次使用相同的结果集。

1 个答案:

答案 0 :(得分:1)

原因是每次调用mysql_fetch_array时都会使用结果集的下一行。

有两种选择:

<强>第一

你必须调用getClass,返回值为$r=mysql_fetch_array($res),在你的情况下为$r(对于每个返回的行)。或者你必须首先将所有行放在一个数组中并将其传递给其他函数。

while($r=mysql_fetch_array($res))
{
    // call another function with $r as parameter
}

$result = array();
while($r=mysql_fetch_array($res))
{
     $result[] = $r;
}
// $result array now contains all rows and can be passed to other methods.

请参阅http://php.net/manual/de/function.mysql-fetch-array.php

<强>第二

您也可以通过调用mysql_data_seek(请参阅http://php.net/manual/de/function.mysql-data-seek.php)重置为资源的内部指针,然后您可以从第一行开始再次使用mysql_fetch_array