Количество строк запроса php

sqlsrv_num_rows

Извлекает количество строк в наборе результатов. Функция требует, чтобы ресурс оператора был создан с помощью статического курсора или курсора набора ключей. Для получения дополнительной информации смотрите описание функций sqlsrv_query() , sqlsrv_prepare() или » Указание типа курсора и выбор строк в документации Microsoft SQLSRV.

Список параметров

Оператор, для которого возвращается количество строк. Ресурс оператора должен быть создан с помощью статического курсора или курсора набора ключей. Для получения дополнительной информации смотрите описание функций sqlsrv_query() , sqlsrv_prepare() или » Указание типа курсора и выбор строк в документации Microsoft SQLSRV.

Возвращаемые значения

Возвращает количество строк, полученных в случае успешного выполнения или false в случае возникновения ошибки. Если используется прямой курсор (по умолчанию) или динамический курсор, возвращается false .

Примеры

Пример #1 Пример использования sqlsrv_num_rows()

$server = «serverName\sqlexpress» ;
$connectionInfo = array( «Database» => «dbName» , «UID» => «username» , «PWD» => «password» );
$conn = sqlsrv_connect ( $server , $connectionInfo );

$sql = «SELECT * FROM Table_1» ;
$params = array();
$options = array( «Scrollable» => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query ( $conn , $sql , $params , $options );

$row_count = sqlsrv_num_rows ( $stmt );

if ( $row_count === false )
echo «Ошибка при получении количества строк.» ;
else
echo $row_count ;
?>

Смотрите также

  • sqlsrv_has_rows() — Указывает, есть ли у указанного оператора строки
  • sqlsrv_rows_affected() — Возвращает количество строк, изменённых последним выполненным запросом INSERT, UPDATE или DELETE

User Contributed Notes 2 notes

Try to avoid using this function if you need good performance. Specifying «Scrollable» in the options will make you queries take ages to run. If your result contains less than 5000 rows (might vary on different hardware) its faster to not use «Scrollable» and loop over them in php instead.

If you need to check if a result contains rows use «sqlsrv_has_rows()», this function works without «Scrollable». After removing all my «Scrollable» queries, my page loadtime went from 900ms to 60ms.

To demonstrate, here is a query that returns 100 rows:
for( $i = 0 ; $i < 100 ; $i ++) $q = "SELECT sku,name FROM product WHERE visible = 1" ;
$result = sqlsrv_query ( $db , $q ,array(), array( «Scrollable» => SQLSRV_CURSOR_KEYSET ));

while( $row = sqlsrv_fetch_array ( $result )) <>
>
?>
This takes about 10s! Thats 10 qps..

Now if we remove «Scrollable»:
for( $i = 0 ; $i < 100 ; $i ++) $q = "SELECT sku,name FROM product WHERE visible = 1" ;
$result = sqlsrv_query ( $db , $q );

while( $row = sqlsrv_fetch_array ( $result )) <>
>
?>
This will run in 300ms, about 334 qps!

Note that when migrating your MS SQL Server PHP Driver from MSSQL to SQLSRV, if you have used mssql_num_rows, replacing them with sqlsrv_num_rows and replacing mssql_query($query, $mssql_link) with sqlsrv_query($sqlsrv_link, $query) calls will make your sqlsrv_num_rows calls fail. In order to avoid that, you should specify either static, keyset or buffered cursors (buffered cursor has been available since SQLSRV 3.0) when calling sqlsrv_query. For example,
mssql_query ( $query , $mssql_link );
// is equivalent to
sqlsrv_query ( $sqlsrv_link , $query , array(), array( ‘Scrollable’ => ‘buffered’ ));
?>
Using the buffered cursor is «more equivalent» than using the static or keyset cursors to simple mssql_query calls, since it caches the entire result set in client memory.

  • Функции SQLSRV
    • sqlsrv_​begin_​transaction
    • sqlsrv_​cancel
    • sqlsrv_​client_​info
    • sqlsrv_​close
    • sqlsrv_​commit
    • sqlsrv_​configure
    • sqlsrv_​connect
    • sqlsrv_​errors
    • sqlsrv_​execute
    • sqlsrv_​fetch_​array
    • sqlsrv_​fetch_​object
    • sqlsrv_​fetch
    • sqlsrv_​field_​metadata
    • sqlsrv_​free_​stmt
    • sqlsrv_​get_​config
    • sqlsrv_​get_​field
    • sqlsrv_​has_​rows
    • sqlsrv_​next_​result
    • sqlsrv_​num_​fields
    • sqlsrv_​num_​rows
    • sqlsrv_​prepare
    • sqlsrv_​query
    • sqlsrv_​rollback
    • sqlsrv_​rows_​affected
    • sqlsrv_​send_​stream_​data
    • sqlsrv_​server_​info

    Источник

    mysqli_num_rows

    Поведение функции mysqli_num_rows() зависит от того, используется ли буферизованная или не буферизованная результирующая выборка. Функция возвращает 0 для небуферизованных наборов результатов, если с сервера не были получены все строки.

    Список параметров

    Возвращаемые значения

    Возвращает целое число ( int ), представляющее количество выбранных строк. Возвращает 0 в небуферизованном режиме, если с сервера не были получены все строки.

    Замечание:

    Если количество строк больше, чем PHP_INT_MAX , число будет возвращено как строка ( string ).

    Примеры

    Пример #1 Объектно-ориентированный стиль

    mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
    $mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

    $result = $mysqli -> query ( «SELECT Code, Name FROM Country ORDER BY Name» );

    /* Получение количества строк в наборе результатов */
    $row_cnt = $result -> num_rows ;

    printf ( «Получено %d строк.\n» , $row_cnt );
    ?>

    Пример #2 Процедурный стиль

    mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
    $link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

    $result = mysqli_query ( $link , «SELECT Code, Name FROM Country ORDER BY Name» );

    /* Получение количества строк в наборе результатов */
    $row_cnt = mysqli_num_rows ( $result );

    printf ( «Получено %d строк.\n» , $row_cnt );

    Результат выполнения данных примеров:

    Примечания

    Замечание:

    В отличие от функции mysqli_stmt_num_rows() , у этой функции нет варианта в объектно-ориентированном стиле. В объектно-ориентированном стиле используйте метод чтения.

    Смотрите также

    • mysqli_affected_rows() — Получает число строк, затронутых предыдущей операцией MySQL
    • mysqli_store_result() — Передаёт на клиента результирующий набор последнего запроса
    • mysqli_use_result() — Готовит результирующий набор на сервере к использованию
    • mysqli_query() — Выполняет запрос к базе данных
    • mysqli_stmt_num_rows() — Возвращает количество строк, полученных с сервера

    User Contributed Notes 3 notes

    If you have problems making work this num_rows, you have to declare ->store_result() first.

    $mysqli = new mysqli ( «localhost» , «root» , «» , «tables» );

    $query = $mysqli -> prepare ( «SELECT * FROM table1» );
    $query -> execute ();
    $query -> store_result ();

    This function doesn’t work with LIMIT used jointly with SQL_CALC_FOUND_ROWS. If you want to obtain the total rows found you must do it manually, example:

    public function errorList ( int $limit = 25 , int $offset = 0 ) $errorList = array();
    $result = $this -> con -> query ( «SELECT SQL_CALC_FOUND_ROWS id, erreur FROM Erreurs ORDER BY id DESC LIMIT $limit OFFSET $offset » );
    while( $row = $result -> fetch_assoc ()) $errorList [] = new Erreur ( $row );
    >
    $result -> free ();
    // $foundRows = $result->num_rows; // 25
    $foundRows = $this -> con -> query ( «SELECT FOUND_ROWS() as foundRows» );
    $this -> foundRows = $foundRows -> fetch_assoc (); // 178
    return $errorList ;
    >
    ?>

    in php 5.3.8 had unexpected troubles when checking for mysqli_result::$num_rows
    If the result of the query is empty then var_dump of the result will be like this:
    class mysqli_result#5 (5) public $current_field => NULL
    public $field_count => NULL
    public $lengths => NULL
    public $num_rows => NULL
    public $type => NULL
    >
    but var_dump($result->num_rows) will give integer-typed zero instead of NULL:
    int(0)

    Источник

    mysqli_stmt_num_rows

    Возвращает число строк в результате запроса. Результат выполнения mysqli_stmt_num_rows() зависит от того использовалась ли mysqli_stmt_store_result() для буферизации результата выборки в дескрипторе.

    Если используется mysqli_stmt_store_result() , mysqli_stmt_num_rows() может быть вызвана в тот же момент.

    Список параметров

    Только для процедурного стиля: Идентификатор выражения, полученный с помощью mysqli_stmt_init() .

    Возвращаемые значения

    Целое число, отражающее число строк в результате запроса.

    Примеры

    Пример #1 Объектно-ориентированный стиль

    /* Открыть соединение */
    $mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

    /* Проверить соединение */
    if ( mysqli_connect_errno ()) printf ( «Ошибка соединения: %s\n» , mysqli_connect_error ());
    exit();
    >

    $query = «SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20» ;
    if ( $stmt = $mysqli -> prepare ( $query ))

    /* Выполнить запрос */
    $stmt -> execute ();

    /* Сохранить результат */
    $stmt -> store_result ();

    printf ( «Число строк: %d.\n» , $stmt -> num_rows );

    /* Закрыть выражение */
    $stmt -> close ();
    >

    /* Закрыть соединение */
    $mysqli -> close ();
    ?>

    Пример #2 Процедурный стиль

    /* Открыть соединение */
    $link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

    /* Проверить соединение */
    if ( mysqli_connect_errno ()) printf ( «Ошибка соединения: %s\n» , mysqli_connect_error ());
    exit();
    >

    $query = «SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20» ;
    if ( $stmt = mysqli_prepare ( $link , $query ))

    /* Выполнить запрос */
    mysqli_stmt_execute ( $stmt );

    /* Сохранить результат */
    mysqli_stmt_store_result ( $stmt );

    printf ( «Число строк: %d.\n» , mysqli_stmt_num_rows ( $stmt ));

    /* Закрыть выражение */
    mysqli_stmt_close ( $stmt );
    >

    /* Закрыть соединение */
    mysqli_close ( $link );
    ?>

    Результат выполнения данных примеров:

    Смотрите также

    • mysqli_stmt_affected_rows() — Возвращает общее количество строк, измененных, удаленных или добавленных последним выполненным выражением
    • mysqli_prepare() — Подготавливает SQL выражение к выполнению
    • mysqli_stmt_store_result() — Передает результирующий набор запроса на клиента

    Источник

    Читайте также:  Формы
Оцените статью