Проблема с проверкой того, что мой пользователь находится в базе данных 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.
1 answers
Вызов rowCount()
после запроса SELECT
может возвращать 0 вместо количества записей, полученных в зависимости от базы данных.
, как можно прочитать в официальной документацииPDOStatement::rowCount()
:
PDOStatement::rowCount()
возвращает количество строк, затронутых последним операторомDELETE
,INSERT
, илиUPDATE
выполняется соответствующим объектомPDOStatement
.Если последний оператор SQL, выполненный связанным объектом
PDOStatement
, был операторомSELECT
, некоторые базы данных могут возвращать количество строк, возвращаемых этим оператором. Однако это поведение не гарантировано для всех баз данных и не должно полагаться на него для переносимых приложений.
Поэтому вы не должны полагаться на него, чтобы узнать количество полученных записей, вы должны использовать SQL-запрос COUNT
или получить все записи с PDOStatement::fetchAll()
и сделать count()
к полученному результату.