با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. تاکنون با روش های درج داده ها در فیلدهای جداول آشنا شدیم ، زمانیکه داده هایی در جداول دیتابیس شما درج شود، برای هر گونه عملیات روی داده های موجود در فیلدها، ابتدا باید رکورد یا رکوردهای موجود در جدول مربوطه را انتخاب نموده و سپس عملیات مورد نظر خود را که معمولا شامل عملیات حذف ،ویرایش، بروزرسانی و … می باشد را اعمال نمائید. برای این منظور در ادامه ی این مباحث چگونگی انتخاب رکوردهای جداول را با استفاده از کار با دستور SELECT در MySQL شرح داده ایم.
در این آموزش با سینتکس دستور SELECT در MySQL و چگونگی واکشی داده ها با استفاده از این دستور آشنا خواهید شد.
دستور SQL SELECT برای جمع آوری داده ها از پایگاه داده MySQL استفاده می شود.
شما می توانید از این دستور در mysql> prompt و همچنین در هر اسکریپتی مانند PHP استفاده کنید.
سینتکس عمومی SQL در دستور SELECT برای واکشی داده ها از جداول MySQL به صورت زیر است :
1 2 3 4 | SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE Clause] [OFFSET M ][LIMIT N] |
در حالت پیش فرض آفست از صفر شروع می شود.
واکشی داده ها در MySQL با استفاده از سینتکس دستور SELECT در MySQL انجام می شود.
مثال زیر تمامی رکوردهای جدول tutorials_tbl را برمی گرداند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 1 | Learn PHP | John Poul | 2007-05-21 | | 2 | Learn MySQL | Abdul S | 2007-05-21 | | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.01 sec) mysql> |
شما می توانید از دستور SELECT داخل تابع () mysql_query در PHP استفاده کنید.
تابع فوق برای اجرای دستورات SQL بکار می رود، و سپس با استفاده از تابع () mysql_fetch_array می توانید داده ها را واکشی کنید.
تابع فوق رکورد یا سطر را به صورت یک آرایه ی associative مرتبط برمی گرداند.
سپس شما می توانید با استفاده از آرایه ی associative با استفاده از نام فیلدها به جای index به آن دسترسی داشته باشید.
زبان PHP توابع دیگری از جمله () mysql_fetch_assoc را ارائه می کند که یک آرایه ی associative را برمی گرداند.
مثال زیر تمام رکوردهای جدول tutorial_tb را با استفاده از تابع ()mysql_fetch_assoc نمایش می دهد :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_assoc($retval)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?> |
شما همچنین می توانید از ثابت MYSQL_NUM به عنوان پارامتر دوم در تابع () mysql_fetch_array استفاده کنید.
این باعث می شود که تابع فوق یک آرایه را با index های عددی باز کند.
حالا مثال قبلی را با استفاده از ثابت MYSQL_NUM به عنوان آرگومان دوم تابع () mysql_fetch_array تکمیل می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_NUM)) { echo "Tutorial ID :{$row[0]} <br> ". "Title: {$row[1]} <br> ". "Author: {$row[2]} <br> ". "Submission Date : {$row[3]} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?> |
با استفاده از تابع mysql_free_result() در PHP می توانید فضای اشغال شده از حافظه را آزاد کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_NUM)) { echo "Tutorial ID :{$row[0]} <br> ". "Title: {$row[1]} <br> ". "Author: {$row[2]} <br> ". "Submission Date : {$row[3]} <br> ". "--------------------------------<br>"; } mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn); ?> |
هنگام واکشی داده شما می توانید یک کد پیچیده بنویسید، اما ساختار کلی همانند قبل خواهد بود.
بعد از درج داده ها در جداول موجود در دیتابیس، برای انجام هر گونه عملیاتی روی داده های ذخیره شده از جمله ویرایش ، حذف ، بروزرسانی و … باید ابتدا رکوردهای مورد نظر را انتخاب کنید که این کار با استفاده از دستور SELECT در MySQL انجام می شود.