PHP – انتخاب داده‌ها از پایگاه داده MySQL

در این بخش، به بررسی روش‌های مختلف انتخاب داده‌ها از پایگاه داده MySQL با استفاده از MySQLi و PDO می‌پردازیم. این روش‌ها شامل استفاده از MySQLi به صورت شیءگرا و رویه‌ای (procedural) و همچنین PDO با استفاده از Prepared Statements است.

انتخاب داده‌ها با MySQLi

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

مثال (MySQLi Object-oriented)

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

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

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

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

// اجرای کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

// بررسی و نمایش نتایج
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();
?>

توضیحات:

  • query(): برای اجرای کوئری SQL.
  • fetch_assoc(): داده‌ها را به صورت آرایه‌های وابسته (associative arrays) می‌خواند.
  • num_rows: تعداد ردیف‌های برگشتی را بررسی می‌کند.

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());
}
// اجرای کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
// بررسی و نمایش نتایج
if (mysqli_num_rows($result) > 0) {
  echo "<table><tr><th>ID</th><th>Name</th></tr>";
  // خروجی داده‌ها از هر ردیف
  while($row = mysqli_fetch_assoc($result)) {
    echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
  }
  echo "</table>";
} else {
  echo "نتیجه‌ای یافت نشد";
}
mysqli_close($conn);
?>

انتخاب داده‌ها با PDO

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

مثال (PDO)

در این مثال، از PDO برای انتخاب داده‌ها و نمایش آن‌ها در جدول 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);

  // آماده‌سازی و اجرای کوئری
  $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
  $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.
  • execute(): اجرای کوئری.
  • fetchAll(): دریافت همه نتایج به صورت آرایه.
  • TableRows: یک کلاس برای نمایش نتایج در جدول HTML.

جمع‌بندی

در این بخش، شما یاد گرفتید که چگونه داده‌ها را از پایگاه داده MySQL با استفاده از MySQLi و PDO انتخاب کنید و آن‌ها را به صورت HTML نمایش دهید. انتخاب روش مناسب به نیازهای خاص پروژه شما و ترجیحات شخصی بستگی دارد، اما PDO به دلیل پشتیبانی از چندین نوع پایگاه داده و قابلیت‌های پیشرفته، معمولاً توصیه می‌شود.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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