I am trying to get the full definition for constraints on a particular table in MSSQL via PHP’s mssql.dll driver, and when I call next_result() on the returned resource from the original query “sp_helpconstraint “, I either get an empty result set, or it does not advance to the next table of data…
IS there a direct query to the sys. tables that I can make that will pull the equivalent information without the extra data set?
This same problem seems to exist with the SQL SERVER ddl supplied by MS as well.
Code is as follows:
$sql = '/* Getting '.$this->ExpectedTableVO->GetTableName().' Constraints */ sp_helpconstraint \''.$this->ExpectedTableVO->GetSchema().'.'.$this->ExpectedTableVO->GetTableName().'\'';
$r = $this->db->Query($sql);
$results['Constraints'] = array();
$r = $this->db->NextResult($r);
while ($row = $this->db->FetchObj($r))
{
$results['Constraints'][] = $row;
}
This results in an empty set, despite there being plenty of constraints on the table in question. Without NextResult, I get the Table with a single row and column “Object Name” with the table name…
Otherwise an empty set… WTF?!
I messed up…
Notice I overwrite $r with the nextresult() command… just calling that without overwriting it fixes this problem.