English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يستخدم قاعدة بيانات MySQL جملة SELECT SQL لاستعلام البيانات.
يمكنك استعلام البيانات في قاعدة البيانات باستخدام نافذة أمر mysql> أو من خلال ملفات السكربت PHP.
ما يلي هو بناء جملة SELECT الشائع لاستعلام البيانات في قاعدة بيانات MySQL:
SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]
يمكنك استخدام جدول واحد أو أكثر في جملة استعلام، يتم تقسيم الجداول باستخدام逗س (,)، ويتم تعيين شرط البحث باستخدام جملة WHERE.
يمكن استخدام أمر SELECT لقراءة سجل واحد أو أكثر.
يمكنك استخدام علامة النجمة (*) لتعويض أي حقل آخر، وجملة SELECT ستعود بجميع بيانات الحقول في الجدول
يمكنك استخدام جملة WHERE لتحديد أي شرط.
يمكنك استخدام خاصية LIMIT لتعيين عدد السجلات المطلوبة.
يمكنك استخدام OFFSET لتعيين كمية التغيير في بيانات بدء جملة SELECT. افتراضياً، كمية التغيير هي 0.
في المثال التالي، سنستخدم أمر SQL SELECT للحصول على بيانات جدول MySQL w3codebox_tbl:
في المثال التالي، سيتم عرض جميع السجلات في جدول w3codebox_tbl:
select * from w3codebox_tbl;
النتيجة المتوقعة:
باستخدام وظيفة PHP mysqli_query() وأمر SQL SELECT للحصول على البيانات.
تُستخدم هذه الوظيفة لت�行ة أوامر SQL، ثم يتم استخراج النتائج من خلال وظيفة PHP mysqli_fetch_array() للاستخدام أو الطباعة لجميع نتائج الاستعلام.
وظيفة mysqli_fetch_array() من الممكن أن تستخرج سطرًا واحدًا من مجموعة النتائج كـ مجموعة مرتبة، أو مجموعة أرقام، أو كليهما. تُعيد مجموعة من الأعمدة بناءً على السجلات المأخوذة من مجموعة النتائج، إذا لم يكن هناك سجلات أخرى، فإنها تعود بـ false.
هذا المثال يقرأ جميع السجلات من جدول w3codebox_tbl.
جرب الأمثلة التالية لعرض جميع السجلات في جدول w3codebox_tbl.
<?php $dbhost = 'localhost'; // عنوان خادم MySQL الخادم $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); $sql = 'SELECT w3codebox_id, w3codebox_title, w3codebox_author, submission_date FROM w3codebox_tbl'; mysqli_select_db($conn, 'w3codebox'); $retval = mysqli_query($conn, $sql); if(! $retval) { die('فشل في قراءة البيانات: ' . mysqli_error($conn)); } echo '<h2>تعليميات الأساس mysqli_fetch_array اختبار</h2>'; echo '<table border="1"><tr><td>معرف التدريب</td><td>العنوان</td><td>المؤلف</td><td>تاريخ التقديم</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) { echo "<tr><td> {$row['w3codebox_id']}</td>". "<td>{$row['w3codebox_title']} </td>" "<td>{$row['w3codebox_author']} </td>" "<td>{$row['submission_date']} </td>" "</tr>"; } echo '</table>'; mysqli_close($conn); ?>
النتيجة الصادرة كالتالي:
في الأمثلة السابقة، يتم تخصيص كل سجل مُقرأ لـ $row، ثم طباعة كل قيمة.
ملاحظة:تذكر إذا كنت بحاجة إلى استخدام المتغيرات في النص، فضع المتغيرات بين الأقواس.
في المثال السابق، المعامل الثاني للوظيفة PHP mysqli_fetch_array() هو MYSQLI_ASSOC, لإعداد هذا المعامل ليعود الناتج كـ مجموعة مرتبة، يمكنك استخدام اسم الحقل كـ مفتاح للمجموعة.
يقدم PHP دالة أخرى: mysqli_fetch_assoc(), يستخرج هذا الدالة سطرًا واحدًا من مجموعة النتائج كـ مجموعة مرتبة. تُعيد مجموعة مرتبة من الأعمدة بناءً على السجلات المأخوذة من مجموعة النتائج، إذا لم يكن هناك سجلات أخرى، فإنها تعود بـ false.
جرب الأمثلة التالية، والتي تستخدم: mysqli_fetch_assoc() الوظيفة لعرض جميع السجلات في جدول w3codebox_tbl:
<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); $sql = 'SELECT w3codebox_id, w3codebox_title, w3codebox_author, submission_date FROM w3codebox_tbl'; mysqli_select_db($conn, 'w3codebox'); $retval = mysqli_query($conn, $sql); if(! $retval) { die('فشل في قراءة البيانات: ' . mysqli_error($conn)); } echo '<h2>التعليمية الأساسية mysqli_fetch_assoc اختبار</h2>'; echo '<table border="1"><tr><td>معرف التدريب</td><td>العنوان</td><td>المؤلف</td><td>تاريخ التقديم</td></tr>'; while($row = mysqli_fetch_assoc($retval)) { echo "<tr><td> {$row['w3codebox_id']}</td>". "<td>{$row['w3codebox_title']} </td>" "<td>{$row['w3codebox_author']} </td>" "<td>{$row['submission_date']} </td>" "</tr>"; } echo '</table>'; mysqli_close($conn); ?>
输出结果如下:
你也可以使用常量 MYSQLI_NUM 作为 PHP mysqli_fetch_array() 函数的第二个参数,返回数字数组。
以下示例使用 MYSQLI_NUM 参数显示数据表 w3codebox_tbl 的所有记录:
<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); $sql = 'SELECT w3codebox_id, w3codebox_title, w3codebox_author, submission_date FROM w3codebox_tbl'; mysqli_select_db($conn, 'w3codebox'); $retval = mysqli_query($conn, $sql); if(! $retval) { die('فشل في قراءة البيانات: ' . mysqli_error($conn)); } echo '<h2>تعليميات الأساس mysqli_fetch_array اختبار</h2>'; echo '<table border="1"><tr><td>معرف التدريب</td><td>العنوان</td><td>المؤلف</td><td>تاريخ التقديم</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>
النتيجة الصادرة كالتالي:
以上三个示例输出结果都一样。
在我们执行完 SELECT 语句后,释放游标内存是一个很好的习惯。
可以通过 PHP 函数 mysqli_free_result() 来实现内存的释放。
以下示例演示了该函数的使用方法。
尝试以下示例:
<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); $sql = 'SELECT w3codebox_id, w3codebox_title, w3codebox_author, submission_date FROM w3codebox_tbl'; mysqli_select_db($conn, 'w3codebox'); $retval = mysqli_query($conn, $sql); if(! $retval) { die('فشل في قراءة البيانات: ' . mysqli_error($conn)); } echo '<h2>تعليميات الأساس mysqli_fetch_array اختبار</h2>'; echo '<table border="1"><tr><td>معرف التدريب</td><td>العنوان</td><td>المؤلف</td><td>تاريخ التقديم</td></tr>'; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "<tr><td> {$row[0]}</td> ". "<td>{$row[1]} </td> ". "<td>{$row[2]} </td> ". "<td>{$row[3]} </td> ". "</tr>"; } echo '</table>'; // إطلاق الذاكرة mysqli_free_result($retval); mysqli_close($conn); ?>
النتيجة الصادرة كالتالي: