multi_query
با تابع multi_query می توانی «اجرای چند پرس وجو» را یکجا انجام دهی. «پرس وجو (Query)» یعنی دستور گرفتن داده از پایگاه داده. این تابع چند دستور را با ; جدا می کند. سپس هر کدام یک «نتیجه (Result Set)» می سازد.
multi_query چه کاری می کند؟
تابع multi_query() چند پرس وجو را پشت سرهم اجرا می کند. هر پرس وجو با سمی کالن جدا می شود. بعد می توانی نتیجه ها را یکی یکی بخوانی و آزاد کنی.
نمونه شیءگرا (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 (mysqli_store_result($con)) {
$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);
?>
گام های عملی اجرای چند پرس وجو
- دستورها را با سمی کالن جدا کن.
- با multi_query() همه را اجرا کن.
- با store_result() نتیجه را بخوان.
- اگر more_results() بود، ادامه بده.
- با next_result() به نتیجه بعدی برو.
نکته ها و خطاهای رایج
نکته: هر نتیجه را پس از خواندن آزاد کن؛ از free_result() استفاده کن.
هشدار: اگر next_result() را صدا نزنی، در همان نتیجه می مانی.
برای ادامه مسیر می توانی صفحات مرتبط را ببینی: more_results و next_result و store_result.
جمع بندی سریع
- اجرای چند پرس وجو با یک فراخوانی.
- پرس وجوها با سمی کالن جدا می شوند.
- نتیجه ها را یکی یکی بخوان.
- وجود نتیجه بعدی را بررسی کن.
- در پایان اتصال را ببند.