next_result
تابع next_result یا «تابع next_result در MySQLi» نتیجه بعدی را آماده می کند. «نتیجه (Result Set)» یعنی جدول خروجی هر پرس وجو. این تابع بعد از اجرای چند پرس وجو با multi_query() استفاده می شود.
تابع next_result در MySQLi چیست؟
وقتی چند پرس وجو پشت سرهم اجرا می کنی، هر کدام نتیجه ای دارد. با next_result() می گویی: برو سراغ نتیجه بعدی. اگر موفق شود، مقدار TRUE برمی گرداند.
نمونه شیءگرا (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();
}
$sql = "SELECT Lastname FROM Persons ORDER BY LastName;";
$sql .= "SELECT Country FROM Customers";
if ($mysqli->multi_query($sql)) {
do {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->free_result();
}
if ($mysqli->more_results()) {
printf("-------------\n");
}
} while ($mysqli->next_result());
}
$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();
}
$sql = "SELECT Lastname FROM Persons ORDER BY LastName;";
$sql .= "SELECT Country FROM Customers";
if (mysqli_multi_query($con, $sql)) {
do {
if ($result = mysqli_store_result($con)) {
while ($row = mysqli_fetch_row($result)) {
printf("%s\n", $row[0]);
}
mysqli_free_result($result);
}
if (mysqli_more_results($con)) {
printf("-------------\n");
}
} while (mysqli_next_result($con));
}
mysqli_close($con);
?>
گام های عملی استفاده از next_result
- با multi_query() چند پرس وجو اجرا کن.
- با store_result() نتیجه فعلی را بخوان.
- اگر لازم بود، more_results() را بررسی کن.
- با next_result() برو سراغ نتیجه بعدی.
نکته ها و خطاهای رایج
نکته: بعد از خواندن هر نتیجه، حتماً آن را آزاد کن؛ از free_result() استفاده کن.
هشدار: اگر next_result() را صدا نزنی، روی همان نتیجه می مانی و حلقه متوقف می شود.
مطالب مرتبط: multi_query و more_results و store_result. برای شروع از تابع next_result هم استفاده کن.
جمع بندی سریع
- next_result() نتیجه بعدی را آماده می کند.
- پس از multi_query() کاربرد دارد.
- موفق باشد، مقدار TRUE برمی گرداند.
- همیشه نتیجه ها را آزاد کن.