Проблема с проверкой того, что мой пользователь находится в базе данных ORACLE


Есть ли какой-то конфликт с rowCount? Заявление я понимаю, что это нормально, и я использую PDO, который также не дал мне проблем ранее

поле в базе данных-VARCHAR2.

я прикрепляю свой код:

    $user = 'pepito'
    $con = connection();
    $statement = $con->prepare("SELECT name FROM usuarios WHERE name = :usu");
    $statement->bindParam(':usu', $user);
    $statement->execute();
    //Con este contador, devielve 1 si encuentra el usuario
    $contador = $statement->rowCount();

счетчик возвращает мне 0, когда он должен был бы вернуть мне 1.

Author: Mr Robot, 2018-02-13

1 answers

Вызов rowCount() после запроса SELECT может возвращать 0 вместо количества записей, полученных в зависимости от базы данных.

, как можно прочитать в официальной документацииPDOStatement::rowCount():

PDOStatement::rowCount() возвращает количество строк, затронутых последним оператором DELETE, INSERT, или UPDATE выполняется соответствующим объектом PDOStatement.

Если последний оператор SQL, выполненный связанным объектом PDOStatement, был оператором SELECT, некоторые базы данных могут возвращать количество строк, возвращаемых этим оператором. Однако это поведение не гарантировано для всех баз данных и не должно полагаться на него для переносимых приложений.

Поэтому вы не должны полагаться на него, чтобы узнать количество полученных записей, вы должны использовать SQL-запрос COUNT или получить все записи с PDOStatement::fetchAll() и сделать count() к полученному результату.

 3
Author: OscarGarcia, 2020-06-11 10:54:57