PHP和ADODB库和SQL服务器的问题

时间:2011-12-20 19:18:38

标签: php adodb

我有一个使用ADODB库的PHP函数。我的查询很简单,从'table'中选择不同的SessID。

当我迭代时,我不断收到以下错误:     注意:未定义的索引:第116行的C:\ Program Files \ xampp \ htdocs \ conference \ AbstractSearchDAO.php中的SessID

以下是代码:

public function searchAbstracts($ name,$ title){

    /**,$dayArray,$sessionTypeArray, $abstractTypeArray,$groupBy*/

    $sql_abstract_session_ids = "select distinct SessID from ABSTRACT where ";
    if($name!=null && $title!=null){
        $sql_abstract_session_ids .= "FALastName like "."'%".$name."%' or AbstractTitle like "."'%".$title."%'";    
    }elseif($name!=null && $title==null){
        $sql_abstract_session_ids .= "FALastName like "."'%".$name."%'";
    }elseif($name==null && $title!=null){
        $sql_abstract_session_ids .= "AbstractTitle like "."'%".$title."%'";
    }elseif($name==null && $title==null){
        $sql_abstract_session_ids = "select distinct SessID from ABSTRACT";
    }

    $connect = new ATSDataSourceLocator();
    $conn = $connect->connectConference2011();

    echo $sql_abstract_session_ids;


    //////////////////////////////////////////////////////////
    //let's get the session ids from the abstract table.
    //we can then match them with another search on the session table (where SessID in (...abstract_session_ids....)
    $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
    $rs = $conn->Execute($sql_abstract_session_ids);
    if($rs==false) die('failed');



    $sql_session_data = "select * from SESSION where SessID in (";

    $count = $rs->RecordCount();

    $myCount = 0;





    while(!$rs->EOF){

        $sql_session_data.="'".$rs->fields['SessID']."'";

        if($myCount<($count-1)){
            $sql_session_data.=",";
        }

        $myCount++;

        $rs->MoveNext();

    }

    $sql_session_data.=")";
    //$conn->Close();

    echo $sql_session_data;

}

每当我尝试迭代并获得字段'SessID'时它就会失败。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

查看ADODB_ASSOC_CASE的定义方式,并将该值与ADODB manual进行比较。如果您没有明确地设置它,它应该默认为2,这意味着您的脚本中的大小写必须与表中的大小写完全匹配。另请注意,在包含define之前,必须adodb.inc.php'。最后,对SessID表中的字段绝对ABSTRACT进行双重和三重检查。

答案 1 :(得分:0)

您是否在迭代中尝试过$ rs-&gt;字段('SessID') - 即用圆形替换方括号?或者,例如,保留方括号并使用$ rs-&gt; fields [0](如果它是第一个字段)?

使用MySQL这不是一个问题,但是如果你使用round而不是square with field index而 抛出错误。我没有方便测试的SQL Server数据库。

我想到的一些事情表明,这种行为也可能因您的ADODB_FETCH设置而异。至少,这确实看起来确实是特定于驱动程序的:

“如果没有预定义提取模式,则提取模式默认为ADODB_FETCH_DEFAULT。此默认模式的行为因驱动程序而异,因此不要依赖ADODB_FETCH_DEFAULT。为了便于携带,我们建议坚持使用ADODB_FETCH_NUM或ADODB_FETCH_ASSOC。不支持ADODB_FETCH_BOTH。“