با دستورselect sql ميتوان درphp ازديتابيس اطلاعات استخراج نمود.فرمت كلي مطابق زيراست.
SELECT column_name(s) FROM table_name
يابفرم زير با استفاده كراكتر ستاره، كه همه ستونها انتخاب ميگردد.
SELECT * FROM table_name
همانطوركه دربخش ايجاد ديتابيس ذكرگرديد، باسه روش ميتوان درphp ازجداول اطلاعات استخراج نمود .ولي براي عدم تكرارازروشmysqli شيگرا استفاده مي نمائيم.
درمثال زيرازجدولmyguests اطلاعات سه فيلدid , firstname , lastname استخراج ميگردد دراين مثال همه رديفهاي جدول دريافت ميشود.
<?php $servername = "localhost"; $username = "admin"; $password = "12345"; $dbname = "myDB"; //SELECT column_name(s) FROM table_name // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection 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) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } $conn->close(); ?>
درابتدا دستورselect مطابق فرمت اسكيوال استاندارد تنظيم شده و درمتغير$sql ذخيره ميشود.مطابق معمول، ارتباط با بانك اطلاعاتي برقرارميشود ونتيجه ارتباط در شي$connquery( )شي رابطه، دستورselect اجرا و نتايج در شئ يا جدولresult قرارميگيرد .نتايج درresult هم متشابه يكarray رفتار مي نمايد . نتايج درجدولي مشابه زير قرارميگيرد.
id | firstname | lastname | |
---|---|---|---|
row 1 | |||
row 2 | |||
row 3 |
متغيرnum_rows خاصيت شيresult است , كه تعداد ركورد اطلاعات دريافتي ميباشد.
همچن تابع يامتدfetch_assoc() باعث حركت درسطر وقابليت انتخاب درآن را فراهم ميكند . وجود درهر سطرانتجابي مقادير عناصرselect.را اشاره دارد كه بفرم زيراستفاده ميشود
$row["id"] $row["firstname"] $row["lastname"]
در مثال ذكر شده تمام اطلاعات جدول استخراج ميگردد .در كارهاي عملي عموما بخشي از رديف هاي اطلاعات درلحظه مورد نيازاست .براي استخراج بخشي ازاطلاعات ازدستورselect همراه شرطwhere استفاده ميكنند .فرمت كلي آن مطابق زيراست.
SELECT column_name(s) FROM table_name WHERE column_name operator value
درقسمتwhere عمدتا عبارات منطقيlogical،قرار ميگيرد . اما شروط براي فيلتركردن اطلاعات گسترده ترازفرم ساده آن است .براي کسب اطلاعات بيشتر، بمراجع كامل آنهارجوع نمائيد.
مثال ـ استخراج اطلاعات شرطي
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //SELECT column_name(s) FROM table_name WHERE column_name operator value // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } $conn->close(); ?>
دراين مثال شرطlastname= 'doe' است، يعني ركوردهائي ازجدولMygGuests انتخاب ميگردد، كه فيلدlastname آنها"doe" باشد.
مثال ـselect با امكانorder by
استخراج اطلاعات با ركورد هاي زياد، جهت بررسي نيازمندطبقه بندي وترتيب دارد .مرتب نمودن
اطلاعات عمدتا با
SELECT column1,column2,... FROM table_name ODER BY column1,column2,... ASC | DESC;
درمثال نمونه كه ازهمان جدول اطلاعات استخراج مينمايد، اطلاعات را به ترتيبlastnme استخراج ومرتب مينمايد .درصورتيكه نوع ترتيب مشخص نشود، پيش فرض آن صعوديست .درخواست مثال مطابق زير ميباشد، كه درمتغير$sqlذخيره ميگردد
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
برنامه مثال مطابق زيرميباشد، روالهاي اجرا مشابه مثالهاي قبلي است.
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } $conn->close(); ?>