Добрый день,
имеется огромное приложение на php, использующее устаревшие функции mysql_* для доступа к БД. Все это добро было решено перевести на pdo_mysql. Все функции работы с БД были успешно переписаны за пару дней на PDO'шные путем замены имен функций регулярными выражениями по проекту (ORM использовалась лишь частично, в погоне за ресурсами).
Вопрос встал только на функции mysql_num_rows. Я понимаю, что без fetchAll в pdo_mysql не получить количество срок, по-этому было решено разделить все вхождения mysql_num_rows на два типа:
1) те, которые действительно считали строки - это требуется и использовалось не часто, по-этому было благополучно за полдня переписано вручную на fetchAll + foreach
2) те, которые проверяли, есть ли строки в результирующем наборе (таких несколько сотен).
Для второго варианта, согласно документации функции PDOStatement::columnCount, была написана функция rs_isEmpty($rs), так как columnCount должна возвращать 0, если резалт сэт пустой. Однако, это не так:
https://bugs.php.net/bug.php?id=66613 (репорт мой)
Других способов узнать, есть ли в резалт сэте строки, в документации я не нашел. Я уже согласен сделать fetch первой строки, но в таком случае курсор сдвигается и способа его вернуть в позицию 0 я тоже не нашел (что кажется мне весьма удивительным). Очень надеюсь на вашу помощь, спасибо.