Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PHP로 MySQL 쿼리의 영향을 받은 행 수 계산하기

PHP에서는 mysql_affected_rows() 함수를 사용하여 쿼리가 변경한 행의 수를 확인할 수 있습니다. 이 함수는 INSERT, UPDATE, DELETE 등의 쿼리 실행 후 실제로 영향을 받은 행의 개수를 정수로 반환하며, 쿼리 실패 시에는 0 또는 -1을 반환할 수 있습니다.

예제 코드

<html>
   <head>
      <title>Rows affected by query</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
         
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         mysql_select_db( 'TUTORIALS' );
         $result_id = mysql_query ($query, $conn_id);
         # 쿼리가 실패하면 0행으로 보고
         $count = ($result_id ? mysql_affected_rows ($conn_id) : 0);
         print ("$count rows were affected\n");
      ?>
   </body>
</html>

코드 설명

위 예제의 핵심 로직은 다음 한 줄입니다.

$count = ($result_id ? mysql_affected_rows($conn_id) : 0);

이 코드는 삼항 연산자를 활용하여, 쿼리 실행 결과(result_id)가 성공적이면 mysql_affected_rows() 함수로 영향을 받은 행 수를 가져오고, 실패했다면 0을 할당합니다. 이렇게 하면 쿼리 오류 발생 시에도 안전하게 행 수를 보고할 수 있습니다.

주의 사항: mysql_* 함수는 더 이상 사용되지 않습니다

mysql_* 계열 함수는 PHP 5.5부터 공식적으로 지원 중단(deprecated)되었으며, PHP 7부터는 완전히 제거되었습니다. 따라서 새로운 프로젝트에서는 반드시 아래의 대안을 사용해야 합니다.

  • MySQLi 확장: 객체 지향 방식에서는 $mysqli->affected_rows 속성을, 절차적 방식에서는 mysqli_affected_rows() 함수를 사용합니다.
  • PDO: PDOStatement::rowCount() 메서드를 사용하여 영향을 받은 행 수를 확인할 수 있습니다.

결론적으로, 쿼리로 변경된 행 수를 확인하는 기본 원리는 동일하지만, 최신 환경에서는 MySQLi나 PDO 기반의 문법으로 코드를 작성하는 것이 안전하고 권장됩니다.