
PDOStatement::rowCount 함수는 SQL 질의의 영향을 받은 행의 수를 반환합니다. 하지만, insert, update, delete로 데이터를 조작했을 때는 0을 반환하는 현상은 MySQL의 특성으로 인해 발생합니다. MySQL에서는 insert, update, delete로 데이터를 조작한 후에 AUTO_INCREMENT 컬럼의 값을 사용하여 영향을 받은 행의 수를 반환하는 것이 더 적절합니다.
다음은 예시입니다.
#hostingforum.kr
php
$stmt = $pdo->prepare("INSERT INTO table명 (컬럼명) VALUES (:값)");
$stmt->execute(array(":값" => "값"));
echo $stmt->rowCount(); // 0을 반환합니다.
$lastInsertId = $pdo->lastInsertId();
echo $lastInsertId; // AUTO_INCREMENT 컬럼의 값을 반환합니다.
또한, MySQL 5.7 이상에서는 PDOStatement::rowCount 함수를 사용하여 insert, update, delete로 데이터를 조작한 후에 영향을 받은 행의 수를 반환할 수 있습니다. 하지만, 이 기능은 MySQL 5.7 이상에서만 지원되며, 이전 버전에서는 지원되지 않습니다.
#hostingforum.kr
php
$stmt = $pdo->prepare("INSERT INTO table명 (컬럼명) VALUES (:값)");
$stmt->execute(array(":값" => "값"));
echo $stmt->rowCount(); // 영향을 받은 행의 수를 반환합니다.
따라서, insert, update, delete로 데이터를 조작할 때는 PDOStatement::rowCount 함수를 사용하는 대신 AUTO_INCREMENT 컬럼의 값을 사용하거나 MySQL 5.7 이상에서만 지원되는 기능을 사용하는 것이 더 적절합니다.
2025-04-29 19:28