我有一个使用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'时它就会失败。 有什么想法吗?
答案 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而
我想到的一些事情表明,这种行为也可能因您的ADODB_FETCH设置而异。至少,这确实看起来确实是特定于驱动程序的:
“如果没有预定义提取模式,则提取模式默认为ADODB_FETCH_DEFAULT。此默认模式的行为因驱动程序而异,因此不要依赖ADODB_FETCH_DEFAULT。为了便于携带,我们建议坚持使用ADODB_FETCH_NUM或ADODB_FETCH_ASSOC。不支持ADODB_FETCH_BOTH。“