استفاده از دستور WHERE در پایگاه داده MySQL در PHP

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Php-menu.png
موارد آموزشی
فرم‌ها در PHP
PHP پیشرفته
شیء گرایی در PHP
پایگاه داده MySQL
۱پایگاه داده MySQL
۲اتصال به MySQL
۳ساخت پایگاه داده
۴ساخت جدول
۵وارد کردن داده
۶دریافت شناسهٔ آخرین سطر
۷وارد کردن چندین داده
۸دستور Prepared
۹انتخاب داده
۱۰دستور Where
۱۱دستور Order By
۱۲حذف داده
۱۳بروزرسانی داده
۱۴محدودسازی داده
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP


انتخاب و فیلتر داده از یک پایگاه داده MySQL

دستور clause برای فیلترکردن رکوردها استفاده می‌شود. [۱]

دستور WHERE برای استخراج آن دسته از رکوردهایی کاربرد دارد که شرطی در مورد آنها برقرار باشد.

SELECT column_name(s) FROM table_name WHERE column_name operator value

برای یادگیری مطالب بیشتر در مورد SQL به آموزش SQL مراجعه کنید.

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

مثال زیر ستون‌های id ,firstname و lastname را از جدول MyGuest در صورتی که مقدار ستون lastname رکورد برابر با عبارت "Doe" باشد ، انتخاب می‌کند، و آن را روی صفحه نمایش می‌دهد:

مثال (شیء گرایی در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 $dbname = "myDB";
 6 
 7 // Create connection
 8 $conn = new mysqli($servername, $username, $password, $dbname);
 9 // Check connection
10 if ($conn->connect_error) {
11     die("Connection failed: " . $conn->connect_error);
12 }
13 
14 $sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
15 $result = $conn->query($sql);
16 
17 if ($result->num_rows > 0) {
18     // output data of each row
19     while($row = $result->fetch_assoc()) {
20         echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
21     }
22 } else {
23     echo "0 results";
24 }
25 $conn->close();
26 ?>


مشاهدهٔ نتیجه


توضیح تکه کدهایی از مثال بالا:

ابتدا، ما یک دستور کوئری SQL که ستون‌های id ،firstname و lastname را از جدول MyGuests در صورتی که مقدار ستون lastname برابر با عبارت "Doe" باشد تنظیم می‌کنیم. خط بعدی کد کوئری را اجرا می‌کند و نتیجه را درون یک متغیر به نام $result قرار می‌دهد.

سپس، تابع function num_rows() بررسی می‌کند که آیا بیش از صفر سطر بازگردانده شده‌است.

اگر بیش از صفر سطر بازگردانده شده باشد، تابع fetch_assoc() تمامی نتایج را درون یک آرایه associative قرار می‌دهد که ما می‌توانیم به وسیله حلقه در بین آنها پیمایش کنیم. حلقه while() بین نتایج پیمایش می‌کند و داده‌ها را از ستون‌های id ,firstname و lastname در خروجی چاپ می‌کند.

مثال زیر همانند مثال بالا، به روش رویه‌ای MySQLi است:

مثال (برنامه‌نویسی رویه ای در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 $dbname = "myDB";
 6 
 7 // Create connection
 8 $conn = mysqli_connect($servername, $username, $password, $dbname);
 9 // Check connection
10 if (!$conn) {
11     die("Connection failed: " . mysqli_connect_error());
12 }
13 
14 $sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
15 $result = mysqli_query($conn, $sql);
16 
17 if (mysqli_num_rows($result) > 0) {
18     // output data of each row
19     while($row = mysqli_fetch_assoc($result)) {
20         echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
21     }
22 } else {
23     echo "0 results";
24 }
25 
26 mysqli_close($conn);
27 ?>


مشاهدهٔ نتیجه


شما همچنین می‌توانید نتایج را درون یک جدول HTML قرار دهید:

مثال (شیء گرایی در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 $dbname = "myDB";
 6 
 7 // Create connection
 8 $conn = new mysqli($servername, $username, $password, $dbname);
 9 // Check connection
10 if ($conn->connect_error) {
11     die("Connection failed: " . $conn->connect_error);
12 }
13 
14 $sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
15 $result = $conn->query($sql);
16 
17 if ($result->num_rows > 0) {
18     echo "<table><tr><th>ID</th><th>Name</th></tr>";
19     // output data of each row
20     while($row = $result->fetch_assoc()) {
21         echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
22     }
23     echo "</table>";
24 } else {
25     echo "0 results";
26 }
27 $conn->close();
28 ?>


مشاهدهٔ نتیجه


انتخاب داده‌ها با PDO (+ دستورات Prepared)

مثال زیر از دستورات prepared استفاده می‌کند.

این مثال ستون‌های id ،firstname و lastname را از جدول MyGuests را در صورتی که مقدار ستون lastname آنها برابر با عبارت "Doe" باشد انتخاب می‌کند و آنها را درون یک جدول HTML نمایش می‌دهد:

مثال (PDO)

 1 <?php
 2 echo "<table style='border: solid 1px black;'>";
 3 echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";
 4 
 5 class TableRows extends RecursiveIteratorIterator {
 6     function __construct($it) {
 7         parent::__construct($it, self::LEAVES_ONLY);
 8     }
 9 
10     function current() {
11         return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
12     }
13 
14     function beginChildren() {
15         echo "<tr>";
16     }
17 
18     function endChildren() {
19         echo "</tr>" . "\n";
20     }
21 }
22 
23 $servername = "localhost";
24 $username = "username";
25 $password = "password";
26 $dbname = "myDBPDO";
27 
28 try {
29     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
30     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
31     $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'");
32     $stmt->execute();
33 
34     // set the resulting array to associative
35     $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
36     foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
37         echo $v;
38     }
39 }
40 catch(PDOException $e) {
41     echo "Error: " . $e->getMessage();
42 }
43 $conn = null;
44 echo "</table>";
45 ?>


مشاهدهٔ نتیجه



منابع آموزشی