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 برای ارتباط با پایگاه داده به دلیل امکانات پیشرفتهتری که ارائه میدهد، معمولاً توصیه میشود.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام