سبد (0)

تبلیغات

دستور select در PHP

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

Wiki

دستور SELECT برای انتخاب داده از یک جدول استفاده می شود.

نحوه استفاده:

می توانیم با استفاده از نام ستون ها، تعداد محدودی از ستون های یک جدول را انتخاب کنیم:

SELECT column_name(s) FROM table_name

یا می توانیم با استفاده از کاراکتر *، تمام ستون های یک جدول را انتخاب کنیم:

SELECT * FROM table_name

برای کسب اطلاعات بیشتر در مورد SQL، به لینک روبرو مراجعه فرمایید: آموزش SQL-مقدمه


انتخاب داده ها با استفاده از MySQLi

Wiki

در مثال زیر، ستون های id و firstname و lastname از جدول MyGuests در صفحه نمایش داده خواهند شد:

مثال(MySQLi Object-oriented)

<?php
$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";
//اجرای کوئری و قرار دادن نتیجه در متغیر
$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();
?>

خروجی کد بالا:

id: 1 - Name: John Doe
id: 2 - Name: Mary Moe
id: 3 - Name: Julie Dooley

توضیح مثال:

  1. ابتدا یک کوئری SQL را تنظیم کردیم که ستون های id و firstname و lastname از جدول MyGuests را انتخاب می کند. نتیجه اجرای کوئری توسط تابع ()query در متغیر result$ ذخیره می شود.
  2. حالا نتیجه کوئری در متغیر result$ است و می خواهیم که آنها را در خروجی نمایش دهیم، اما قبل از آن باید مطمئن شویم که کوئری ما نتیجه ای را در بر داشته است، بنابراین با استفاده از تابع ()num_rows چک می کنیم که ردیف ها بزرگتر از صفر باشد.
  3. با استفاده از تابع ()fetch_assoc ردیف اول داده ها برگردانده می شود، در یک اسکریبت با هر بار فراخوانی این تابع ردیف های بعدی بر می گردد.
  4. با استفاده از حلقه while و با هر بار فراخوانی تابع ()fetch_assoc نتیجه در متغیر row$ ذخیره می شود و این کار تا آخرین رکورد ادامه می یابد و اطلاعات ستون ها چاپ می شود.

در مثال زیر نیز با استفاده از روش MySQLi procedural ستون های id و firstname و lastname از جدول MyGuests در صفحه نمایش داده خواهند شد:

مثال(MySQLi Procedural)

<?php
$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";
$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);
?>

خروجی کد بالا:

id: 1 - Name: John Doe
id: 2 - Name: Mary Moe
id: 3 - Name: Julie Dooley

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

مثال(MySQLi Object-oriented)

<?php
$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";
$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 "0 results";
}
$conn->close();
?>

خروجی کد بالا، البته با استایل زیر:

<style>
table, th, td {
border: 1px solid black;
}
</style>

خروجی:

ID Name
1 John Doe
2 Mary Moe
3 Julie Dooley

انتخاب داده ها با استفاده از PDO + دستورات آماده

Wiki

در مثال زیر، از دستورات آماده (prepared statements) استفاده شده است.

در مثال زیر نیز با استفاده از روش PDO ستون های id و firstname و lastname از جدول MyGuests در یک جدول HTMLی نمایش داده خواهند شد:

مثال(PDO)

<?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();

// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

خروجی کد بالا:

Id Firstname Lastname
1 John Doe
2 Mary Moe
3 Julie Dooley

برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

دیدگاه‌ها  

0 # محمدرضا ;کریمی 1397-02-27 18:18
سلام من یه جدول دارم میخام آیدی یه فیلدو بدم فقط اسمشو برامنقل قول:
$result = $db->query($sql);
برگردونه اما هر نمیتونم با اون result چاپش کنم میشه راهنماییم کنید.
مثلا فرض کنید یک جدول person آیدیشو میخام بدم و یک اسم برام برگردونه نقل قول:
$sql="SELECT name FROM PERSON WHERE id=1 ";
فقط میخام اسمو چاپ کنم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # شهلا 1397-02-12 13:00
سلام در روش شی گرایی متغیر $result که رکوردست می باشد را درک نمی کنم که چه نوعی است.؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # امیرکیان 1394-12-03 16:58
وقتی که یک جدولی را با دستور سلکت انتخاب کردیم و هر سطر را به صورت یک آرایه ی انجمی برگرداندیم؛
خواستم بدانم چطور میشود هر سطر را به صورت یک آرایه عددی برگشت داد؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-12-06 22:50
سؤالتون دقیق نیست.
ولی به نظرم با تابع mysql_assoc_fet ch و mysql_array_fet ch بتونید کار موردنظر رو انجام بدید.

سؤالتون رو بیشتر توضیح بدید، تا دقیق بتونم بگم چطوری میشه انجامش داد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # soheyla 1394-11-15 23:16
سلام
دستورات php مثل خود تگ php را در بانک ذخیره میکنم ولی هنگام چاپ نمایش نمیده .
ممنون میشم اگه راههنمایی کنید
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # مهرداد صلاحی 1394-11-16 09:53
سلام.
اگه کد بذارید، بهتره! ولی برای ذخیره دستورات php در دیتابیس بهتره، اون رو کد کنید یا اینکه اون رو داخل دابل‌کوتیشن بذارید و بعد ذخیره کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # مینا نوبخت 1394-09-28 01:47
سلام اگه ممکنه در مورد این خط یه توضیح مفید بدین

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EX CEPTION);
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # مهرداد صلاحی 1394-09-28 20:07
با سلام.
برای توضیح باید شما تا حدودی به مفاهیم کلاس و شئ‌گرایی مسلط باشید. خیلی ساده بگم، این خط تنظیمات خطا رو برای کار با این پایگاه داده و شی مذکور ست میکنه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # Reza Bahrami 1394-09-14 11:27
سلام
توی روش PDO میشه قسمت اول برنامه رو بیشتر توضیح بدین ؟
شما یه کلاس تشکیل دادین و ارث بری کردین و بعد تابع سازنده تعریف کردین !
ولی من اون قسمت رو متوجه نشدم که چرا اینطور نوشتین ! ممنون میشم بیشتر توضیح بدین :)
با تشکر از سایت خوبتون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # مهرداد صلاحی 1394-09-14 11:53
با سلام.
توسط این کلاس آبجکت گرفته میشه و تبدیل به آرایه میشه. اگر دقت کنید در حلقه foreach از کلاس مربوطه استفاده شده که خروجی اون یه آرایه هست و این آرایه در حلقه استفاده میشه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # mohsen moardi 1393-12-22 19:35
سلام.من يه ديتابيسي ساختم كه كالكشنش utf8-persian-ci هست...وقتي ميخوام داده هاي فارسي رو از يكي از جدول ها بگيرم به صورت علامت سوال ميان...بايد چيكار كنم؟البته من كد ها رو با utf8 سيو كردم اما بازم با علامت سوال نشون ميده....بايد موقع اتصال به ديتابيس كد خاصي وارد كنم؟از روش MySQLi Procedural هم استفاده كردم
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # hmkhafan 1394-09-09 01:36
شما باید با بلافاصله بعد از متصل شدن به دیتابیس دقیقا بعد از دستور mysql_select_db این کد رو بنویسید:
mysql_query("SET NAMES 'UTF8'");
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
-1 # مظاهر نصوحی 1393-12-23 09:56
نباید مشکل خاصی پیش بیاد ولی با این حال با utf8_general_ci هم تست کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # mohsen moardi 1393-11-26 16:25
سلام...تو مثالي كه اطلاعات به صورت جدول نشون داده ميشن فرض كنيد بخوايم تو هر رديف يك دكمه اي قرار بديم كه با زدن اون دكمه بشه اطلاعات اون رديف رو تو ديتابيس دستكاري كرد..مثلا با زدن دكمه اطلاعات اون رديف پاك بشه ..بايد چطور اين كارو كرد؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیر پهلوان صادق 1393-11-27 07:12
سلام، این مورد در پروژه رزرو هتل به خوبی پیاده شده است.
www.beyamooz.com/php/339-project-hotel/2594
اگر تصور کنید اطلاعات را در یک جدول نمایش می دهید، به ازای ستون آخر باید بصورت زیر عمل کنید:
echo "<td>< a href='all_user. php?delete_by_u_id=$u_id&action=delete' onclick='return confirm(\"آيا اطلاعات حذف شود؟\");'>حذف</a></td>";
همان طور که در کد بالا مشاهده می کنید، با استفاده از متد get، پارامتر "delete_by_u_id " که شامل ID ردیف مورد نظر است را به سرور ارسال کرده ایم ... در ادامه با استفاده از ID، ردیف حذف خواهد شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # mohsen moardi 1393-12-16 10:48
سلام....all_use r.php آدرس صفحه اي هست كه id بهش فرستاده ميشه؟ يكم پيچيدست....ميشه يكم بيشتر توضيح بديد؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1393-12-16 12:51
اگر به پنل مدیریتی پروژه رزرو هتل مراجعه کنید (www.beyamooz.com/demo/beyamooz-hotel/admin/all_reserve.php) و بعنوان مثال به قسمت "مدیریت کاربران" مراجعه کنید، خواهید دید که دو ستون آخر شامل لینک های "حذف" و "ویرایش" است. حالا اگر از مرورگر FireFox استفاده می کنید. روی کلمه ی حذف، راست کلیک کرده و گزینه ی "Inspect Element" را انتخاب نمایید. بدین ترتیب در پایین صفحه، کد HTML مربوط به لینک "حذف" نمایش داده می شود.
همان طور که در "Comment" قبلی هم ذکر شد، ویژگی href مربوط به لینک "حذف" بصورت زیر مقدار دهی شده است:href='all_user. php?delete_by_u _id=$u_id&actio n=delete' بنابراین زمانی که کاربر روی لینک "حذف" کلیک می کند، فایل "all_user.php" اجرا خواهد شد، اما توجه داشته باشید که دو پارامتر زیر نیز همراه با درخواست ما به سرور ارسال می شود:
1- delete_by_u_id : شامل ID یا شناسه ردیف است
2- action : این پارامتر، عملی که می خواهیم انجام دهیم، را مشخص می کند. بعنوان مثال برای لینک "ویرایش" این پارامتر با مقدار Update مقدار دهی شده است.
پس تا اینجا، ID و نوع عمل مشخص شد، تنها کافی است این مقادیر را سمت سرور دریافت کرده و عملیات مورد نظر را انجام دهیم.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # mohsen moardi 1393-12-18 17:35
ببخشيد دستور بالا مربوط به كدوم قسمت از php هست؟من اين دستور رو ياد گرفتم ولي اگه بخوام بيشتر بدونم راجبش بايد تو كدوم قسمت سايت بگردم؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # امیر پهلوان صادق 1393-12-19 09:43
منظورتون کدام دستور است؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # mohsen moardi 1393-12-19 10:15
همين دستوري كه تو قسمت href لينك بالا وارد كرديد...ميخواست م بيشتر بدونم راجبش اما نميدونم كدوم قسمت سايت هست
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1393-12-19 12:21
آهان، توجه کنید زمانی که کاربر روی لینک "حذف" کلیک می کند آدرسی که در قسمت href تنظیم شده است اجرا خواهد شد. یعنی فایل all_user.php اجرا می شود.
اما نکته ی بسیار مهم در اینجا این است که، زمانی که درخواست اجرای all_user.php به سرور ارسال می شود، همزمان دو متغییر delete_by_u_id و action نیز ارسال خواهد شد.
به این روش ارسال متغییر get گفته می شود.
روش کار بسیار ساده است، یعنی برای ارسال پارامتر از این طریق به سرور باید بلافاصله بعد از نام فایل یک علامت سوال (؟) گذاشته و بعد نام پارامتر را ذکر کنید و بعد علامت مساوی (=) و نهایتاً مقدار پارامتر
نکته: اگر تعداد پارامترهای بیشتر از یکی است، باید بین هر پارامتر از علامت & استفاده کنید.<a href="/all_user. php?param_name01=Value01&param_name02=Value02" >
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # mohsen moardi 1393-12-16 13:15
بسيار سپاسگزارم...ممن ون بابت توضيح كامل شما
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # mohsen moardi 1393-11-06 11:33
سلام و خسته نباشيد....ميشه راجبه قسمتي ك while گذاشتيد و شرط داخلش كمي توضيح بديد؟تو مثال
Procedural در قسمت شرط نوشتيد:$result = mysqli_query($c onn, $sql);
if (mysqli_num_row s($result) > 0) {
while($row = mysqli_fetch_as soc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname "]. " " . $row["lastname" ]. "";
}
}

درحالي ك $row قبلا تعريف نشده...سيستم چطور id هارو دونه ب دونه ميگيره و اطلاعاش رو چاپ ميكنه؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1393-11-07 15:36
خط 1: نتیجه اجرای کوئری در متغییر result$ قرار می گیرد.
خط 2: اگر تعداد ردیف های برگشتی بزرگتر از صفر بود، حلقه داخل if اجرا خواهد شد.
خط 3: هر بار که حلقه اجرا می شود، با استفاده از متد ()mysqli_fetch_ as soc یکی از ردیف ها داخل متغییر row$ قرار می گیرد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # sarina sarina 1393-11-01 12:33
سلام من میخوام یک جدول از پایگاه دادم بخونم و نمایش بدم این خطارومیده.در صورتیکه در sql درج میشه.

Fatal error: Call to a member function fetch_array() on a non-object in C:\xampp\htdocs \viewpage.php on line 36
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر پهلوان صادق 1393-11-04 09:46
سلام، حتماً به سایت www.php.net برید و متد ()fetch_array رو جستجو کنید، اطلاعات خوبی در اختیارتون قرار خواهد گرفت.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # sarina sarina 1393-11-04 17:03
بله مشکلم برطرف شد ممنون.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # job_job 1393-10-03 17:21
سلام . واقعا ممنون .خیلی مفید بود
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی