فیلتر کردن رکوردها
قسمت WHERE در انتهای دستورات SELECT، UPDATE و یا DELETE قرار می گیرد و رکوردها را فیلتر می کند(مثلاً در دستور DELETE مشخص می کند که عمل حذف روی کدام رکوردها اتفاق بیافتد).
نحوه استفاده:
SELECT column_name(s)
FROM table_name
WHERE column_name operator value
برای کسب اطلاعات بیشتر در مورد SQL، به لینک روبرو مراجعه فرمایید: آموزش SQL-مقدمه
در مثال زیر، بشرطی ستون های id و firstname و lastname از جدول MyGuests انتخاب می شوند که مقدار ستون lastname آنها برابر "Doe" باشد:
مثال(MySQLi Object-oriented)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ارتباط به پایگاه داده
$conn = new mysqli($servername, $username, $password, $dbname);
// مطمئن شدن از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
//اجرای کوئری و قرار دادن نتیجه در متغیر
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// نمایش داده ها به ازای هر ردیف
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
//بستن ارتباط با پایگاه داده
$conn->close();
?>
خروجی کد بالا:
مثال(MySQLi Procedural)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط با پایگاه داده
$conn = mysqli_connect($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// نمایش داده ها به ازای هر ردیف
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
خروجی کد بالا:
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
شما باید کوئری به این صورت بنویسید:
SELECT * FROM `table` WHERE `mobile` LIKE '0935%'
شما باید از کلمهی کلیدی LIKE و % استفاده کنید. درصد در واقع جایگزین تمامی کاراکترها (در اینجا شمارهها) میشه.
اگر بخواهیم مقدار فیلتر را از یک فیلد لیست کشویی در فرم با متد POST فراخوانی و با ستون جدول مقایسه کنیم، کد به چه صورت تغییر می کند؟
توسط POST['controlName']; //comment_$ مقدار اون کنترل رو میگیرید و سپس این مقدار رو در query گنجونده و رکوردهای مرتبط رو بر میگردونید.
سؤالتون یه مقدار گنگ هست، بیشتر توضیح بدید تا بهتر راهنمایی بشه کرد.
با تشکر
یه مثال از PDO:
$db = new PDO("...");
$statement = $db->prepare("select id from some_table where name = :name");
$statement->execute(array(':name' => "Jimbo"));
$row = $statement->fetch();