Почему $ rs-> RowCount не возвращает значение? - PullRequest
0 голосов
/ 02 декабря 2011

Я использую базовый запрос SQL с ADO и PHP, но счетчик строк всегда возвращает -1.Чего мне не хватает?

Вот мой код:

include 'constants.php';

// Create an instance of the  ADO connection object
$conn = new COM ("ADODB.Connection")
    or die("Cannot start ADO");

// Open the connection to the database
$conn->open(DB_CONN_STR);

$query = "select * from table_name";

$rs = $conn->execute($query);

if (!$rs) {
    return;
}
else {
    return $rs->RecordCount();
}

Я знаю, что в этой таблице есть значения ... чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Руководство объясняет почему. http://phplens.com/lens/adodb/docs-adodb.htm#recordcount

кажется, вы установили

$ ADODB_COUNTRECS = false

0 голосов
/ 27 января 2015

У меня была похожая проблема при использовании Adodb с PHP, с драйвером PDO mssql.

  • Я выполнил SQL-запрос с GetOne или LimitQuery в блоке try / catch
  • запрос привел к ошибке
  • Я поймал исключение и продолжил выполнять правильный запрос с Execute
  • результирующие вызовы RecordCount будут ошибочно возвращать -1 (но я мог бы перебирать строки).

Я обнаружил, что некоторые функции Adodb устанавливают этот флаг $ADODB_COUNTRECS на false перед выполнением запроса. В случае ошибки флаг не был установлен обратно на true, и поэтому RecordCount вернул -1.

Я установил глобальную переменную на true в своем конструкторе исключений, и это решило проблему.

...