Нет реального преимущества использования .php по сравнению с .html для небольших статических веб-страниц. .Html-страница может быть немного быстрее из-за того, что она не отправляется сначала в синтаксический анализатор PHP. Тем не менее, эта скорость будет незначительной, поэтому не стоит упоминать.
Одна из причин, по которой вы можете захотеть использовать файл .php, заключается в том, что вы используете модульный сайт. Например, вам может понадобиться код заголовка в одном файле php, навигация в другом и нижний колонтитул в другом. Таким образом, вы можете использовать php для включения кода из каждого файла вашего модуля и включения его на каждую страницу вашего сайта.
Вы можете сделать это через сам MySQL, используя функцию FOUND_ROWS ()
, не уверен, есть ли лучшие альтернативы.
Редактировать: Кажется, что единственная причина, по которой это возможно с MySQL, заключается в том, что он внутренне извлекает все строки результата и буферизирует их, чтобы иметь возможность дать вам эту информацию. См. mysql_unbuffered_query ()
. Если вы используете эту функцию вместо mysql_query ()
, функция mysql_num_rows ()
не будет работать. Если вам действительно нужно знать количество строк при использовании PDO, вы можете извлечь все строки из PDO в массив и затем использовать count ()
.
Обратите внимание, что вы не должны использовать rowCount () для запросов SELECT, поскольку PDOStatement-> rowCount () возвращает количество строк, затронутых последним оператором DELETE, INSERT или UPDATE, выполненным соответствующим объектом PDOStatement .
Вместо этого вы можете использовать fetchAll () в массиве, а затем count ().
Единственный способ, которым базы данных могут дать вам подсчет количества строк, - это запустить запрос и подсчитать количество строк.
Расширение mysql по умолчанию использует режим буферизованного запроса. это приводит к тому, что весь набор данных будет загружен в память до того, как управление будет возвращено PHP, и он сможет начать обработку строк.
PDO использует небуферизованный режим по умолчанию, что приводит к меньшей задержке во время загрузки страницы и обычно это то, что вы хочу. Компромисс заключается в том, что rowCount () не будет возвращать достоверную информацию, пока не будет получен весь набор данных.
Так как же получить это количество?
Легко:
$q = $db->query("SELECT ...");
$rows = $q->fetchAll();
$rowCount = count($rows);
echo "There are $rowCount rows\n";
foreach ($rows as $row) {
print_r($row);
}
Но это отстой, потому что он запрашивает все строки впереди и замедляет загрузку моей страницы, у старого расширения mysql этой проблемы не было!?
Но это ' именно то, что на самом деле делает старое расширение mysql под прикрытием; это единственный способ подсчитать.