2011-12-20 32 views
0

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

当我重复,我不断收到以下错误: 注意:未定义指数:SessID在C:\ Program Files文件\ XAMPP \ htdocs中\会议\ AbstractSearchDAO.php线116上

下面是代码:

公共职能searchAbstracts($名称,$标题){

/**,$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' 它失败。 任何想法?

回答

0

退房如何ADODB_ASSOC_CASE定义和比较价值的ADODB manual。如果您没有明确设置,则应该默认为2,这意味着您的脚本中的大小写必须完全匹配表中的大小写。此外,请注意,您必须在之前define'd 您包括adodb.inc.php。最后,请在您的ABSTRACT表格中双击和三重检查该字段是否为SessID

0

你有没有在你的迭代试图$ RS->字段(“SessID”) - 即具有轮替换方括号?或者,例如,保留方括号并使用$ rs-> fields [0](如果它是第一个字段)?

用MySQL,这不是一个问题,但如果你使用圆,而不是正方形,一个字段索引它抛出一个错误,而不是名字。我没有方便测试的SQL Server数据库。

我脑海中的某些东西说这种行为也可能因您的ADODB_FETCH设置而异。至少,这看起来确实是驱动程序特定的:

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