doudang9147 2013-01-08 14:28
浏览 31
已采纳

可以让PHP类返回记录集

I'm trying to create a class for my access database connection and return a recordset, then iterate through the RS with MoveNext().

class AccessDBConnection 
{ 
private $db; 
private $sql; 

function __construct($db, $sql) {

    $conn = new COM('ADODB.Connection') or exit('Cannot start ADO.');
    $conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db"); 

    $rs = $conn->Execute($sql);
    return $rs;

}

USE:

function testclass () {
    $rs = new AccessDBConnection("e:\database.mdb", "SELECT StudentID, UserName FROM MyTable WHERE StudentID = 'BJxxxx'");

    while (!$rs->EOF) { 
        $SID =  $rs->Fields['StudentID']->Value; 
        $UN =  $rs->Fields['UserName']->Value;
            echo $SID . " -- CLASS TEST -- " . $UN . "<br>";
                $rs->MoveNext(); 
    }
}
  • 写回答

2条回答 默认 最新

  • doushi4633 2013-01-08 14:31
    关注

    You can't return your resultset from constructor.

    Create some separated method like getRS which will returns it.

    class AccessDBConnection 
    {
        private $conn;
    
        public function __construct($db) {
    
            $this->conn = new COM('ADODB.Connection') or exit('Cannot start ADO.');
            $this->conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db"); 
    
        }
    
        public function query($sql) {
    
            return $this->conn->Execute($sql);
    
        }
    
    }
    

    Usage:

    function testclass () {
        $db = new AccessDBConnection("e:\database.mdb");
        $rs = $db->query("SELECT StudentID, UserName FROM MyTable WHERE StudentID = 'BJxxxx'");
    
        while (!$rs->EOF) { 
            $SID =  $rs->Fields['StudentID']->Value; 
            $UN =  $rs->Fields['UserName']->Value;
                echo $SID . " -- CLASS TEST -- " . $UN . "<br>";
                    $rs->MoveNext(); 
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退