💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ دانشفر
مقدار منفی affected_rows
جامعه پی اچ پی ایجاد شده در ۲۵ اردیبهشت ۱۴۰۳

چرا مقدار affected rows رو -1 چاپ میکنه؟خطایی هم ندارم و عدد متغیر count رو به درستی نشون میده


$sql1 = "select count(*) from products";
$stmt = $mysqli -> prepare($sql1);
$stmt -> execute();
$stmt -> bind_result($count);
$stmt -> fetch();
echo "<pre>";
print_r($stmt);
echo "</pre>";
1-iGOZ.png

سلام،

affected_rows تعداد ردیف‌های تغییر یافته توسط آخرین عملیات INSERT، UPDATE یا DELETE رو نشون می‌ده. در کد شما، شما یک دستور SELECT اجرا کردید که تعداد رکوردها رو میده. این دستور هیچ ردیفی رو تغییر نمی‌ده، بنابراین affected_rows برابر تغییری نمیکنه و روی مقدار پیش فرض میمونه. شما شیء stmt رو print_r کردید، مقدار -1 رو برای affected_rows چاپ می‌کنه، چون این مقدار پیش‌فرض پراپرتیه. برای دریافت تعداد رکوردهای بازگشتی از دستور SELECT، باید از متغیر $count استفاده کنید:

$sql1 = "SELECT count(*) as total FROM products";
$stmt = $mysqli->prepare($sql1);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
echo "<pre>";
echo "Count: " . $count . "\n";
echo "Affected Rows: " . $stmt->affected_rows . "\n";
echo "</pre>";
محسن موحد ۲۶ اردیبهشت ۱۴۰۳، ۰۶:۲۵