PHP Code Igniter с помощью запроса num_row (), получая -1 - PullRequest
0 голосов
/ 27 марта 2019

Я использую код ниже, чтобы получить результат из базы данных.Я ожидаю получить количество строк> 0, потому что у меня есть 1 запись в базе данных.Вместо этого я получаю результат ниже.

-1Array
(
    [0] => stdClass Object
        (
            [lngID] => 1
            [strRefTable] => team
            [intFirstParent] => 
            [intSecondParent] => 
            [bitHasChild] => 
            [strRefValue] => Automation
            [strShortDesc] => Automation
            [strLongDesc] => Automation
            [strCreatedBy] => 181551
            [dteCreatedDate] => 2019-03-27 09:09:08.000
            [strUpdatedBy] => 181551
            [dteUpdatedDate] => 2019-03-27 09:09:08.000
            [bitActive] => 1
        )

)

Где -1 представляет эхо-сигнал $query->num_rows(), а массив подтверждает, что у меня есть запись в базе данных.

$query = $db->query($sql);
if(!$query) {
throw new Exception('Server error');
}
echo $query->num_rows();exit();
print_r($query->result());die();
if($query->num_rows() > 0){
$result = $query->result();
} 

ПочемуЯ получаю -1 в качестве числа строк?

UPDATE

Использование MSSQL

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Одним из возможных объяснений этого поведения (если вы используете PDO PHP Driver для SQL Server для подключения к SQL Server) является то, что num_rows() использует PDOStatement :: rowCount и на основе документации результат будет быть -1, если вы выполняете оператор SELECT и не используете подходящий тип курсора.

Возвращает количество строк, добавленных, удаленных или измененных. Если последний SQL оператор, выполненный связанным PDOStatement, был SELECT оператор, курсор PDO :: CURSOR_FWDONLY возвращает -1. Курсор PDO :: CURSOR_SCROLL ABLE возвращает количество строк в набор результатов.

0 голосов
/ 27 марта 2019

Похоже, что это может быть ошибка в более старой версии CodeIgniter.

Попробуйте обновить версию CodeIgniter или, если это невозможно, напрямую запросить количество строк, используязапрос COUNT(*) или использование функции PHP count() для полного набора результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...