English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
mysqli_stmt_affected_rows() 함수는 최근 실행된 문장이 변경, 제거 또는 삽입한 행의 총 수를 반환합니다.
mysqli_stmt_affected_rows()함수는 최근 실행된 문장이 영향을 미친 (변경, 제거, 삽입) 행 수를 반환합니다.
INSERT, UPDATE 또는 DELETE 문장 이후에 이 함수를 호출하면 이 함수가 정상적으로 작동합니다. SELECT 쿼리에 영향을 받은 행 수를 알고 싶다면 다음 함수를 사용해야 합니다. mysqli_stmt_num_rows() 함수.
mysqli_stmt_affected_rows($stmt)
순번 | 파라미터 및 설명 |
---|---|
1 | stmt(필수) 이는 SQL 쿼리를 실행하는 문장의 대상 객체를 나타냅니다. |
PHP mysqli_stmt_affected_rows() 함수는 이전 (INSERT, UPDATE, REPLACE 또는 DELETE) 작업에 영향을 받은 행 수를 나타내는 정수 값을 반환합니다.
문장에 오류가 있으면 이 함수는 반환합니다.-1영향을 받은 행이 없으면 이 함수는 반환합니다.0。
이 함수는 원래 PHP 버전에서 시작되었습니다.5중에서 도입되었으며 모든 더 높은 버전에서 사용할 수 있습니다。
추정해 보면 MySQL 데이터베이스에 employee라는 테이블이 생성되어 있습니다. 그 내용은 다음과 같습니다:
mysql> select * from employee; +------------+--------------+------+------+--------+ | FIRST_NAME | LAST_NAME | AGE | SEX | INCOME | +------------+--------------+------+------+--------+ | Vinay | Bhattacharya | 20 | M | 21000 | | Sharukh | Sheik | 25 | M | 23300 | | Trupthi | Mishra | 24 | F | 51000 | | Sheldon | Cooper | 25 | M | 2256 | | Sarmista | Sharma | 28 | F | 15000 | +------------+--------------+------+------+--------+ 5 rows in set (0.00 sec)
아래 예제는 다음을 보여줍니다:mysqli_stmt_affected_rows()함수 사용법(과정 지향 스타일), 데이터를 업데이트한 후, 영향을 받은 행 수를 반환합니다:
<?php $con = mysqli_connect("localhost", "root", "password", "mydb"); $stmt = mysqli_prepare($con, "UPDATE employee set INCOME=INCOME-where INCOME>=?"); mysqli_stmt_bind_param($stmt, "si", $reduct, $limit); $limit = 20000; $reduct = 5000; //문장 실행 mysqli_stmt_execute($stmt); print("업데이트된 레코드......\n"); //영향을 받은 행 $count = mysqli_stmt_affected_rows($stmt); //문장 종료 mysqli_stmt_close($stmt); //연결 닫기 mysqli_close($con); print("영향을 받은 행 수 " . $count); ?>
출력 결과
업데이트된 레코드...... 영향을 받은 행 3
객체 지향 스타일에서 이 함수의 문법은 다음과 같습니다:$con-> affected_rows;.아래는 객체 지향 스타일에서 이 함수의 예제입니다. 데이터를 삭제한 후, 영향을 받은 행 수를 반환합니다:
<?php //연결 설정 $con = new mysqli("localhost", "root", "password", "mydb"); $con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT"); print("테이블 생성.....\n"); $con -> query("insert into Test values('Raju", 25),('Rahman', 30),('Sarmista', 27); print("레코드 추가.....\n"); $stmt = $con -> prepare("DELETE FROM Test WHERE Name in(?, ?)"); $stmt -> bind_param("ss", $name1, $name2); $name1 = 'Raju'; $name2 = 'Rahman'; print("레코드가 제거되었습니다.....\n"); //문장 실행 $stmt->execute(); //Affected rows $count = $stmt ->affected_rows; print("영향을 받은 행 수 ". $count); //문장 종료 $stmt->close(); //연결 닫기 $con->close(); ?>
출력 결과
테이블 생성..... 레코드 추가..... 레코드가 제거되었습니다..... 영향을 받은 행 수 2
쿼리가 어떤 행에 영향을 미치지 않으면, 그 반환 값을 확인하겠습니다-
<?php $con = @mysqli_connect("localhost", "root", "password", "mydb"); mysqli_query($con, "CREATE TABLE Test(Name VARCHAR(255), AGE INT"); print("테이블 생성.....\n"); mysqli_query($con, "insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27); print("레코드 추가.....\n"); $stmt = mysqli_prepare($con, "DELETE FROM test WHERE Age<?"); mysqli_stmt_bind_param($stmt, "i", $num); $num = 8; //문장 실행 mysqli_stmt_execute($stmt); //영향을 받은 행 $count = mysqli_stmt_affected_rows($stmt); print("영향을 받은 행 수(쿼리가 어떤 작업도 수행하지 않을 때): ". $count); //문장 종료 mysqli_stmt_close($stmt); //연결 닫기 mysqli_close($con); ?>
출력 결과
테이블 생성..... 레코드 추가..... 영향을 받은 행 수(쿼리가 어떤 작업도 수행하지 않을 때): 0