Intereting Posts
Результат печати запроса mysql из переменной Код возвращает последнее значение перед последним обновлением вместо последнего введенного значения? UTF-8 полностью через Поля MySQL datetime и летнее время – как я могу ссылаться на «дополнительный» час? Как добавить массив к каждому элементу другого массива с моим выбором ключа и значения (в php)? PHP strpos проверяет многие Что делают эти две строки в Mod_Rewrite? Все значения = 's' в таблице в ошибке PHP Почему определенные типы подготовленных запросов с использованием PDO в PHP с MySQL медленны? PHP / MySQL: получение нескольких столбцов с одинаковым именем в объединении запросов без псевдонимов? HTML-экспорт в Excel с использованием JavaScript, работа в FIREFOX, но не в IE и CHROME Как отображать сообщения WordPress в 3 столбца по горизонтали? Запрос cURL с использованием прокси-сервера socks5 не работает при использовании PHP, но он работает через командную строку php curl базовая аутентификация в соответствии с RFC2617 Как использовать пользовательский профиль firefox с фреймворком PHPUnit Webdriver?

Можно ли проверить, имеет ли pdostatement :: fetch () результаты без итерации по строке?

У меня есть страница, которая должна проверять результаты, и способ, которым я пришел, сделать это успешно, но выполняет итерацию в первой строке результатов. Есть ли способ, который я могу проверить без повторения, или вернуться к этой первой строке без повторного выполнения запроса?

Я делал это:

$q = pdo::prepare($SQL); $q->execute(array(':foo'=> foo, 'bar'=>bar); if(!q->fetch){ //no results; }else{ //results; }; 

Он делает в значительной степени то, что я надеялся, с неудачной стороной, пропуская первый ряд результатов.

Я прибегал к запуску $ q-> execute () во второй раз. Есть ли способ избежать этого?

Просто поместите результат извлечения в переменную:

 if($row = $q->fetch()) { // $row contains first fetched row echo $row['coloumn_name']; } else // no results 

Если вы хотите быть ленивым, вы всегда можете сделать что-то вроде:

 $totalRows = count($resultSet->fetchAll()); 

Однако это не так эффективно для больших наборов результатов.

В противном случае см. Страницу руководства о rowCount () (особенно пример № 2) для того, что, как представляется, является стандартным обходным решением. На этой странице также есть интересные комментарии пользователей.

SELECT FOUND_ROWS() вы найдете для этого SELECT FOUND_ROWS() . См. Пример на сайте php.net http://www.php.net/manual/en/ref.pdo-mysql.php#77984

rowCount (), как известно, работает с mysql, поэтому, если переносимость не вызывает беспокойства, используйте это.

в противном случае вы можете попытаться изменить логику программы, например

  $stmt->execute(); $count = 0; foreach($stmt as $record) { // output... $count++; } if(!$count) echo "no results!";