query
تابع query در MySQLi یک «پرس وجو (Query)» روی دیتابیس اجرا می کند. یعنی دستور SQL را می فرستی و نتیجه می گیری. مثل این که به معلم پیام بدهی و جواب تکلیف را بگیری.
تابع query چیست و چه می دهد؟
تابع $mysqli->query(query, resultmode) روی دیتابیس اجرا می شود. برای SELECT، یک شیء mysqli_result برمی گرداند. برای بقیه دستورات، TRUE می دهد. در خطا، FALSE می شود.
حالت های resultmode
MYSQLI_USE_RESULT یعنی داده بزرگ را تدریجی بخوان. MYSQLI_STORE_RESULT پیش فرض است و نتیجه را کامل نگه می دارد. مثل دانلود استریم در برابر دانلود کامل.
نمونه شیءگرا (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();
}
if ($result = $mysqli->query("SELECT * FROM Persons")) {
echo "Returned rows are: " . $result->num_rows;
$result->free_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();
}
if ($result = mysqli_query($con, "SELECT * FROM Persons")) {
echo "Returned rows are: " . mysqli_num_rows($result);
mysqli_free_result($result);
}
mysqli_close($con);
?>
گام های عملی سریع
- اتصال را بساز و خطا را چک کن.
- کوئری را با query() اجرا کن.
- اگر نتیجه جدولی است، تعداد یا سطرها را بخوان.
- نتیجه را آزاد کن و اتصال را ببند.
نکته ها و لینک های مرتبط
نکته: برای داده ورودی کاربر، از prepare استفاده کن تا امن تر شود.
نکته: برای اجرای چند کوئری پشت سرهم، multi_query و حرکت بین نتایج با next_result را ببین.
جمع بندی سریع
- تابع query کوئری را اجرا می کند.
- SELECT یک شیء نتیجه می دهد.
- نتیجه را آزاد کن تا حافظه سبک بماند.
- برای امنیت ورودی، از prepare برو.