Количество строки с PDO

Байт c Октет

Почему размер байта составляет от 0 до 255?

Это не так.

Октет имеет 8 битов, что позволяет использовать 2 8 sup> возможностей. байт неправильно определен. Не следует приравнивать два термина, поскольку они не являются полностью взаимозаменяемыми. Кроме того, злые языки программирования, которые поддерживают только подписанные символы (ʏᴏᴜ ᴋɴᴏw ᴡʜᴏ ʏᴏᴜ ᴀʀᴇ﹗), могут представлять только значения от -128 до 127, а не от 0 до 255.

Большому Железу требуется много времени, чтобы ржаветь.

Большинство, но не все современные машины имеют 8-битные байты, но это относительно недавнее явление. Конечно, так было не всегда. Многие очень ранние компьютеры имели 4-битные байты, а 6-битные байты когда-то были распространены даже сравнительно недавно. Оба этих типа байтов содержат меньше значений , чем 255.

Эти 6-битные байты могут быть весьма удобными, поскольку при размере слова в 36 битов шесть таких байтов точно вписываются в одно из этих 36-битных слов без каких-либо колебаний. Это очень полезно для хранения Fieldata , используемого очень популярными компьютерами Sperry ry . В 36-битное слово можно вписать только 4 символа, а не 6 Fieldata. У меня было 1100 серий в вычислительном центре, когда я был студентом, но это остается верным даже с современной серией 2200.

Введите ASCII

ᴀsᴄɪɪ - который был и всего лишь 7-битный, а не 7-битный код - проложил путь к выходу из этого мира. Важность - 360 , которая имеет 8-битные байты независимо от того, содержат они «или», не следует преуменьшать.

Тем не менее, многие машины долгое время поддерживали Radix ‑ 50 . Это был 40-символьный репертуар, в котором три его символа могли быть эффективно упакованы в одно 16-битное слово в рамках двух различных схем кодирования. Я использовал много ᴅᴇᴄ ᴘᴅᴘ ‑ 11 и Vaxen в течение моих университетских дней, и Rad ‑ 50 был просто фактом жизни, реальностью, которую нужно было приспособить.

183
задан Sᴀᴍ Onᴇᴌᴀ 17 May 2017 в 07:32
поделиться

3 ответа

$sql = "SELECT count(*) FROM `table` WHERE foo = bar"; 
$result = $con->prepare($sql); 
$result->execute(); 
$number_of_rows = $result->fetchColumn(); 

Не самый элегантный способ сделать это, к тому же он включает дополнительный запрос.

PDO имеет PDOStatement :: rowCount () , что, по-видимому, делает не работает в MySql. Какая боль.

Из документа PDO:

Для большинства баз данных PDOStatement :: rowCount () не вернуть количество строк, затронутых оператор SELECT. Вместо этого используйте PDO :: query () для выдачи SELECT COUNT (*) оператор с тем же предикаты как ваш предполагаемый SELECT заявление, затем используйте PDOStatement :: fetchColumn () в получить количество строк, которые будут быть возвращенным. Ваше приложение может тогда выполните правильное действие.

РЕДАКТИРОВАТЬ: В приведенном выше примере кода используется подготовленный оператор, который во многих случаях, вероятно, не нужен для подсчета строк, поэтому:

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows;
251
ответ дан 23 November 2019 в 06:00
поделиться

Как я уже писал ранее в ответ на аналогичный вопрос , единственная причина, по которой mysql_num_rows () работал, - это то, что он извлекал все строки изнутри. чтобы предоставить вам эту информацию, даже если она вам не показалась.

Итак, в PDO вы можете:

  1. Использовать функцию MySQL FOUND_ROWS () .
  2. Использовать PDO. fetchAll () , чтобы получить все строки в массив, затем использовать для него count () .
  3. Выполните дополнительный запрос к SELECT COUNT (*) , как предположил karim79.
84
ответ дан 23 November 2019 в 06:00
поделиться

Это старый пост, но я разочарован в поисках альтернативы. Очень жаль, что в PDO нет этой функции, тем более что PHP и MySQL, как правило, идут рука об руку.

В использовании fetchColumn () есть досадный недостаток, поскольку вы больше не можете использовать этот набор результатов (эффективно), поскольку fetchColumn () перемещает стрелку к следующей строке. Так, например, если у вас есть результат, подобный

  1. Фрукты-> Банан
  2. Фрукты-> Яблоко
  3. Фрукты-> Апельсин

Если вы используете fetchColumn (), вы можете узнать, что есть 3 фрукта возвращается, но если вы теперь перебираете результат, у вас есть только два столбца. Цена fetchColumn () - это потеря первого столбца результатов только для того, чтобы узнать, сколько строк было возвращено. Это приводит к неаккуратному кодированию и полностью приводит к ошибкам в случае реализации.

Итак, теперь, используя fetchColumn (), вы должны реализовать совершенно новый вызов и запрос MySQL только для того, чтобы получить свежий рабочий набор результатов. (который, надеюсь, не изменился с момента вашего последнего запроса), я знаю, маловероятно, но это может случиться. Кроме того, накладные расходы на двойные запросы при проверке количества строк. Что для этого примера невелико, но анализ 2 миллионов строк в объединенном запросе - не самая приятная цена.

Я люблю PHP и поддерживаю всех, кто участвует в его разработке, а также сообщество в целом, ежедневно использующее PHP, но очень надеюсь, что это будет решено в будущих выпусках. Это «действительно» моя единственная жалоба на PHP PDO, который в остальном - отличный класс.

5
ответ дан 23 November 2019 в 06:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: