2011-12-20 51 views
0

私はADODBライブラリを使用してPHP関数を持っています。私のクエリはシンプルで、 'テーブル'から別のSessIDを選択します。PHPとADODBライブラリとSQLサーバの問題

私が反復すると、私は次のエラーを取得しておいてください。 お知らせ:未定義のインデックス:CでSESSID:\ここでライン116

上AbstractSearchDAO.php \プログラムファイル\ xamppの\ htdocsに\会議はコードです:

パブリック関数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 'の前にの前にadodb.inc.phpを含める必要があります。そして、最後に、あなたのABSTRACTテーブルの分野が間違いなくSessIDであることを二重と三重にチェックしてください。

0

繰り返しで$ rs-> fields( 'SessID')を試しましたか?角かっこを丸で置き換えましたか?例えば、角括弧をつけて、$ rs-> fields [0](最初のフィールドの場合)を使用しますか?

MySQLの場合、これは問題ではありませんが、は、名前ではなくフィールドインデックスを持つ正方形の代わりに丸を使用するとエラーになります。私はSQL Serverデータベースをテストするのに便利ではありません。

私の頭の中の何かは、この動作がADODB_FETCHの設定によって異なる可能性があると言います。

"フェッチモードが事前に定義されていない場合、フェッチモードのデフォルトはADODB_FETCH_DEFAULTです。このデフォルトモードの動作はドライバによって異なりますので、依存しないでくださいADODB_FETCH_DEFAULT。移植性のため、ADODB_FETCH_NUMまたはADODB_FETCH_ASSOCに固執することを推奨します。多くのドライバはADODB_FETCH_BOTHをサポートしていません。