تعداد ردیف های متاثر (affected_rows)
تابع یا ویژگی affected_rows تعداد ردیف های «تغییر کرده» را می دهد. «تغییر» یعنی حذف، درج، یا ویرایش. مثل شمارش برگه هایی که واقعا دست خورده اند.
تعریف ساده و کاربرد
پس از یک SELECT/INSERT/UPDATE/REPLACE/DELETE، عدد ردیف های تغییر کرده برمی گردد. مقدار -1 یعنی خطا.
سبک شیءگرا (Object Oriented)
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
$mysqli->query("SELECT * FROM Persons");
echo "Affected rows: " . $mysqli->affected_rows . "\n";
$mysqli->query("DELETE FROM Persons WHERE Age>32");
echo "Affected rows: " . $mysqli->affected_rows . "\n";
$mysqli->close();
?>
سبک 절رویندی (Procedural)
<?php
$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
mysqli_query($con, "SELECT * FROM Persons");
echo "Affected rows: " . mysqli_affected_rows($con) . "\n";
mysqli_query($con, "DELETE FROM Persons WHERE Age>32");
echo "Affected rows: " . mysqli_affected_rows($con) . "\n";
mysqli_close($con);
?>
نکات مهم و تفاوت ها
نکته: برای SELECT معمولا مقدار صفر می آید، چون داده فقط خوانده می شود.
نکته: بعد از هر کوئری مقدار تازه می شود. پس بلافاصله چک کن.
هشدار: اگر مقدار -1 شد، خطای کوئری یا اتصال را بررسی کن.
مراحل پیشنهادی استفاده
- اتصال را بساز و خطا را چک کن.
- کوئری را اجرا کن.
- بلافاصله
affected_rowsرا بخوان. - بر اساس نتیجه تصمیم بگیر.
جمع بندی سریع
- بعد از هر کوئری مقدار تازه می شود.
- صفر یعنی تغییری رخ نداده.
- منفی یک یعنی خطا.
- برای DELETE و UPDATE بسیار کاربردی است.
تعداد ردیف های متاثر در پروژه های واقعی بسیار کمک می کند. برای اجرای کوئری هم به mysqli_query سر بزن.