PHP – فیلتر کردن داده‌ها از پایگاه داده با دستور Where در MySQL

در این بخش، نحوه استفاده از دستور WHERE برای فیلتر کردن رکوردها و انتخاب داده‌های خاص از پایگاه داده MySQL با استفاده از MySQLi و PDO را بررسی خواهیم کرد. دستور WHERE به شما این امکان را می‌دهد که تنها رکوردهایی که شرایط خاصی را برآورده می‌کنند انتخاب کنید.

انتخاب و فیلتر کردن داده‌ها با MySQLi

MySQLi به صورت شیءگرا

مثال (MySQLi Object-oriented)

در این مثال، داده‌ها را از جدول “MyGuests” انتخاب می‌کنیم و فقط رکوردهایی را که نام خانوادگی آن‌ها “Doe” است نمایش می‌دهیم:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// بررسی اتصال
if ($conn->connect_error) {
  die("اتصال ناموفق: " . $conn->connect_error);
}

// آماده‌سازی و اجرای کوئری با شرط WHERE
$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 "نتیجه‌ای یافت نشد";
}

$conn->close();
?>

توضیحات:

  • WHERE lastname='Doe': رکوردهایی که نام خانوادگی آن‌ها برابر با “Doe” است را انتخاب می‌کند.
  • fetch_assoc(): نتایج را به صورت آرایه‌های وابسته (associative arrays) برمی‌گرداند.

MySQLi به صورت رویه‌ای

مثال (MySQLi Procedural)

این مثال مشابه مثال شیءگرا است، اما به صورت رویه‌ای نوشته شده است:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// ایجاد اتصال
$conn = mysqli_connect($servername, $username, $password, $dbname);

// بررسی اتصال
if (!$conn) {
  die("اتصال ناموفق: " . mysqli_connect_error());
}

// آماده‌سازی و اجرای کوئری با شرط WHERE
$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 "نتیجه‌ای یافت نشد";
}

mysqli_close($conn);
?>

توضیحات مشابه به مثال شیءگرا. mysqli_query() و mysqli_fetch_assoc() برای اجرای کوئری و دریافت نتایج استفاده می‌شوند.

نمایش نتایج در جدول HTML

مثال (MySQLi Object-oriented)

برای نمایش داده‌ها در یک جدول HTML:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// بررسی اتصال
if ($conn->connect_error) {
  die("اتصال ناموفق: " . $conn->connect_error);
}

// آماده‌سازی و اجرای کوئری با شرط WHERE
$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
$result = $conn->query($sql);

// بررسی و نمایش نتایج در جدول HTML
if ($result->num_rows > 0) {
  echo "<table><tr><th>ID</th><th>Name</th></tr>";
  while($row = $result->fetch_assoc()) {
    echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
  }
  echo "</table>";
} else {
  echo "نتیجه‌ای یافت نشد";
}

$conn->close();
?>

انتخاب داده‌ها با PDO و استفاده از Prepared Statements

مثال (PDO)

در این مثال، از Prepared Statements برای انتخاب داده‌ها استفاده می‌شود و نتایج در یک جدول HTML نمایش داده می‌شود:

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

class TableRows extends RecursiveIteratorIterator {
  function __construct($it) {
    parent::__construct($it, self::LEAVES_ONLY);
  }

  function current() {
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
  }

  function beginChildren() {
    echo "<tr>";
  }

  function endChildren() {
    echo "</tr>" . "n";
  }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  // ایجاد اتصال
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  // آماده‌سازی و اجرای کوئری با شرط WHERE
  $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'");
  $stmt->execute();

  // تنظیم نتیجه به صورت آرایه‌های وابسته
  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
    echo $v;
  }
}
catch(PDOException $e) {
  echo "خطا: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

توضیحات:

  • prepare(): برای آماده‌سازی کوئری SQL با استفاده از دستور WHERE.
  • execute(): برای اجرای کوئری.
  • fetchAll(): دریافت همه نتایج به صورت آرایه.

جمع‌بندی

در این بخش، شما یاد گرفتید که چگونه با استفاده از دستور WHERE رکوردهای خاص را از پایگاه داده MySQL انتخاب کنید و آن‌ها را با استفاده از MySQLi و PDO به نمایش بگذارید. انتخاب روش مناسب به نیازهای خاص پروژه شما بستگی دارد، اما استفاده از PDO برای ارتباط با پایگاه داده به دلیل امکانات پیشرفته‌تری که ارائه می‌دهد، معمولاً توصیه می‌شود.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.