programing

자주 사용되는 PDO 행 수

procenter 2023. 7. 29. 13:16
반응형

자주 사용되는 PDO 행 수

저는 종종 다음과 같은 PDO의 rowCount 함수를 사용합니다.

$sql = $dataBase->prepare('SELECT email, firstname, lastname
                           FROM pr__user
                           WHERE id = :id');

$sql->execute(array('id' => $_SESSION['user_id']));
$rowCount = $sql->rowCount();

항상 잘 작동했지만 PHP 설명서에서 보았습니다.

연결된 PDO 문에서 실행된 마지막 SQL 문이 SELECT 문인 경우 일부 데이터베이스는 해당 문에서 반환된 행 수를 반환할 수 있습니다.그러나 이 동작이 모든 데이터베이스에 대해 보장되는 것은 아니며 휴대용 응용프로그램에 의존해서는 안 됩니다.http://php.net/manual/en/pdostatement.rowcount.php

MySQL과 MariaDB에서 잘 작동해서 계속 사용했습니다.내가 그것을 사용할 때 나는 휴대용 애플리케이션을 원하는데, 내 코드를 수정해야 합니까?

나는 절대 행 수를 묻지 않습니다.쿼리는 항상 결과 행 배열을 반환합니다(어떤 형식에서는). 저는 단순히 배열에 몇 개의 행이 있는지 물어볼 수 있습니다(예: PHP의 경우).count(..)기능.

PDO는 MySQL뿐만 아니라 다양한 데이터베이스에 대한 인터페이스입니다.그들은 함수가 완전히 다른 백엔드에서 동일한 종류의 값을 반환한다는 보장을 하지 않습니다.

이것이 "휴대용 애플리케이션용"의 의미입니다.코드를 임의 데이터베이스에서 전체적으로 실행하려면 해당 기능을 사용하지 않아야 합니다.그렇지 않은 경우 일반 라이브러리 코드를 작성하지 않고 MySQL의 특정 동작에 의존할 수 있습니다.

가정이 합리적인지 확인하기 위해 무엇을 하든 테스트를 해야 합니다.

오히려, 그것은 무의미하고 불필요합니다.당신은 아무 이유 없이 당신의 코드를 부풀리고 있습니다.

예를 들어 선택한 데이터를 사용할 것임이 분명합니다. 그렇지 않으면 전자 메일을 선택할 필요가 없습니다.즉, 행 수 대신 해당 데이터를 계속 사용할 수 있습니다.다음 연산자가 fetch()라고 가정하면 rowCount()를 생략할 수 있습니다.

$sql = $dataBase->prepare('SELECT email, firstname, lastname
                       FROM pr__user
                       WHERE id = :id');

$sql->execute(array('id' => $_SESSION['user_id']));
$user = $sql->fetch();
if ($user) { ...

이제부터는 $rowCount가 사용된 모든 조건에서 사용할 수 있습니다.단순히 여기에 카운트가 실제로 필요한 것이 아니라 배열이 정수만큼 역할을 하는 부울 플래그가 필요하기 때문입니다.

이메일이 필요하지 않고 사용자의 존재 여부만 알 수 있는 경우에도 그냥 선택할 수 있습니다.1스칼라 값을 입력한 다음 가져오기 - 코드가 균일하게 유지되도록 합니다.

언급URL : https://stackoverflow.com/questions/41926623/pdo-rowcount-used-often

반응형