返回结果集的PHP函数



我有一个处理MySql数据的php类

<?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>";
}
?>

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

这样做的原因是每次调用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从第一行开始。

相关内容

  • 没有找到相关文章

最新更新