طريقة أنشاء قاعده بيانات mysql و إضافة وتعديل وحذف وترتيب البيانات في الجدول في php
تحتوي قاعدة البيانات على جدول أو اكثر .
إنشاء قاعدة بيانات mysql
يمكن إنشاء قاعدة بيانات من خلال التعبير CREATE DATABASE .
التركيبة
CREATE DATABASE database_nameلاستخدام التعبير يمكن استخدام الوظيفة mysql_query() و بهذه الوظيفة يمكن استخدام لارسال الأوامر الى الاتصال مع MySQL .
مثال
في المثال التالي سنقوم بإنشاء قاعدة بيانات تسمى my_db
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } mysql_close($con); ?>
إنشاء جدول
يمكن إنشاء قاعدة بيانات من خلال التعبير CREATE TABLE .
التركيبة
CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... )لإنشاء الأمر يجب اضافة التعبير CREATE TABLE الى الوظيفة mysql_query() .
مثال
في المثال التالي سيتم إنشاء جدول مسمى Persons مع ثلاثة أعمدة . ستكون أسماء الأعمدة كالتالي FirstName و LastName و Age :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } // Create database if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } // Create table mysql_select_db("my_db", $con); $sql = "CREATE TABLE Persons ( FirstName varchar(15), LastName varchar(15), Age int )"; // Execute query mysql_query($sql,$con); mysql_close($con); ?>
ملاحظة هامة
- يجب اختيار قاعدة البيانات قبل إنشاء الجدول حيث يمكن اختيار قاعدة البيانات من خلال الوظيفة mysql_select_db() .
- عند إنشاء حقل قاعدة بيانات بنوع varchar , يجب تحديد الحد الأقصى للطول في الحقل مثل varchar(15) .
- تحدد نوع البيانات نوع العمود الذي سيقوم بحمل البيانات فيها .
الحقول Primary Keys و Auto Increment
يجب أن يحتوي كل حقل على وسم أساسي Primary Keys .
يستخدم primary key لتحديد فريد ومميز للصفوف في الجدول . يجب أن يكون primary key فريد ضمن الجدول بالاضافة بأن primary key لايجب أن يكون فارغ null لأن محرك قاعدة البيانات يحتاج الى قيمة لتحديد مكان الصف في الجدول .
في المثال التالي سيتم تحديد حقل لعنوان id للجدول personID مثل حقل primary key . غالباً مايكون primary key يحتوي على رقم ID و غالباً مايكون مع AUTO_INCREMENT . تزيد AUTO_INCREMENT تلقائياً قيمة الحقل برقم واحد في كل مرة يزيد عدد الصفوف . وذلك للتأكد بأن primary key ليس فارغاً null يجب تحديد ضبط بأن القيمة غير فارغة NOT NULL .
مثال
$sql = "CREATE TABLE Persons ( personID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(personID), FirstName varchar(15), LastName varchar(15), Age int )"; mysql_query($sql,$con);
ادراج بيانات الى جدول قاعدة البيانات
تستخدم INSERT INTO لإدراج صف جديد في الجدول .
التركيبة
من الممكن كتابة التعبير INSERT INTO من خلال طريقتين .
لايحدد الشكل الأول اسماء الأعمدة حيث سيتم ادراج البيانات فقط قيمهم :
INSERT INTO table_name VALUES (value1, value2, value3,...)
يحدد الشكل الثاني كلاً من اسماء الأعمدة و قيمهم التي سيتم ادراجها :
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)لاستخدام التعابير السابقة بشكل جيد يمكن استخدام الوظيفة mysql_query() حيث سيتم ارسال الأوامر و الطلبات الى الاتصال الخاص مع MySQL .
مثال
في الدرس السابق قمنا بإنشاء جدول باسم Persons مع ثلاثة أعمدة Firstname و Lastname و Age كما سنقوم باستخدام نفس الجدول في هذا المثال . يضيف المثال التالي صف جديد للجدول Persons :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Root', 'Griffin', '35')"); mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')"); mysql_close($con); ?>
ادراج بيانات من نموذج الى قاعدة البيانات
الآن سنقوم بإنشاء نموذج HTML والذي بدوره سيقوم بإضافة صف جديد للجدول Persons .
هنا كود نموذج HTML :
<html> <body> <form action="insert.php" method="post"> Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
عند ضغط المستخدم على زر الارسال في نموذج HTML سيتم ارسال المعلومات الى الملف insert.php .
يقوم الملف insert.php بالاتصال بقاعدة البيانات ثم يحوّل المعلومات المسجلة في النموذج الى متغيرات $_POST .
ثم يرسل mysql_query() أمراً الى INSERT INTO ليتم ادراج صف جديد الى جدول Persons .
هناالكود الموجود في صفحة insert.php :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added"; mysql_close($con) ?>
اختيار البيانات من جدول قاعدة البيانات
يستخدم التعبير SELECT لاختيار البيانات من قاعدة البيانات .
التركيبة
SELECT column_name(s) FROM table_nameلاستخدام التعبير يمكن استخدام الوظيفة mysql_query() و بهذه الوظيفة يمكن استخدام لارسال الأوامر الى الاتصال مع MySQL .
مثال
يختار المثال التالي جميع البيانات المخزنة في جدول Persons ( تستخدم الاشارة * لاختيار جميع البيانات الموجودة في الجدول ) :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons"); while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; } mysql_close($con); ?>
يخزن المثال السابق البيانات العائدة من خلال الوظيفة mysql_query() في المتغير $result . ثم سنقوم باستخدام mysql_fetch_array() لاسترجاع الصف الثاني من صفوف الجدول . أما الحلقة while فإنها ستدور حول جميع الصفوف في جدول البيانات وتقدم النتيجة .
لعرض النتيجة لجميع الصفوف يمكن استخدام متغير $row كالتالي :
($row['FirstName'] and $row['LastName'])
ستظهر النتيجة كالتالي :
Ahmad Jasem Samer Masri Fuad Alasad
عرض النتيجة في جدول HTML
يختار المثال التالي نفس البيانات في المثال السابق لكن سيتم عرض البيانات في جدول HTML كالتالي :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons"); echo "<table border='1'> <tr> <th>Firstname</th> <th>Lastname</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($con); ?>
ستظهر النتيجة على المتصفح كالتالي
FirstName | LastName |
---|---|
Ahmad | Jasem |
Samer | Masri |
Fuad | Alasad |
عبارة WHERE
تستخدم عبارة WHERE لتحديد صف معين في جدول قاعدة البيانات .
التركيبة
SELECT column_name(s) FROM table_name WHERE column_name operator valueلإنشاء كود PHP لاستخدام التعبير السابق يمكن استخدام mysql_query() و هي تستخدم لارسال الأوامر أو الطلبات الى اتصال MySQL .
مثال
يختار المثال التالي جميع الصفوف من الجدول Persons حيث WHERE الاسم Ahmad
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons WHERE FirstName=Ahmad"); while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; } ?>
ستظهر النتيجة على المتصفح كالتالي
Ahmad Jasem
الترتيب Order By
تستخدم الترتيب ORDER BY لترتيب البيانات المعروضة من قاعدة البيانات .
عند استخدام ORDER BY يكون الترتيب تصاعدي بشكل تلقائي ولكن ان أردت الترتيب بشكل آخر مكن استخدام الكلمة DESC والتي تشكل ترتيب تنازلي .
التركيبة
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESCمثال
يختار المثال التالي جميع البيانات في الجدول Persons ثم يقوم بترتيب الجدول حسب العمر تصاعدياً :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons ORDER BY age"); while($row = mysql_fetch_array($result)) { echo $row['FirstName']; echo " " . $row['LastName']; echo " " . $row['Age']; echo "<br />"; } mysql_close($con); ?>
ستظهر النتيجة على المتصفح كالتالي
Ahmad Jasem33 Samer Masri35
الترتيب من خلال عمودين
أيضاً من الممكن ترتيب أكثر من عمود . عند استخدام الترتيب من خلال أكثر من عمود فإن العمود التاني سيتم استخدامه اذا كانت القيمة الأولى متساوية :
SELECT column_name(s) FROM table_name ORDER BY column1, column2
تحديث البيانات في قاعدة البيانات
تستخدم خاصية التحديث UPDATE للتعديل على البيانات الحالية في الجدول .
التركيبة
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
ملاحظة : لاحظ بأن التعبير WHERE يحدد أي الصف أو الصفوف الذي ينبغي تحديثه لكن بينما اذا لم تستخدم WHERE عندها سيتم تحديث جميع الصفوف .
لإنشاء كود PHP لاستخدام التعبير السابق يمكن استخدام mysql_query() و هي تستخدم لارسال الأوامر أو الطلبات الى اتصال MySQL .
مثال
في دروس سابقة قمنا بإنشاء جدول اسمه Persons وها هنا يظهر كالتالي
FirstName | LastName | Age |
---|---|---|
Ahmad | Jasem | 33 |
Samer | Masri | 35 |
Fuad | Alasad | 40 |
سيقوم المثال التالي بتحديث بعض البيانات في الجدول Persons :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("UPDATE Persons SET Age = '36' WHERE FirstName = 'Ahmad' AND LastName = 'Jasem'"); mysql_close($con); ?>
بعد التحديث سيبدو الجدول كالتالي
FirstName | LastName | Age |
---|---|---|
Ahmad | Jasem | 36 |
Samer | Masri | 35 |
Fuad | Alasad | 40 |
حذف بيانات من قاعدة البيانات
يستخدم التعبير DELETE FROM لحذف بيانات من جدول قاعدة البيانات .
التركيبة
DELETE FROM table_name WHERE some_column = some_value
ملاحظة : لاحظ بأن التعبير WHERE يستخدم مع تركيبة الحذف DELETE لتحديد معين أي البيانات التي سيتم حذفها من الجدول ولكن ان لم تستخدم WHERE سيتك حذف جميع صفوف الجدول .
لإنشاء كود PHP لاستخدام التعبير السابق يمكن استخدام mysql_query() و هي تستخدم لارسال الأوامر أو الطلبات الى اتصال MySQL .
مثال
لاحظ الجدول في هذا المثال التالي
FirstName | LastName |
---|---|
Ahmad | Jasem |
Samer | Masri |
Fuad | Alasad |
يحذف المثال التالي البيانات من الجدول Persons حيث where الكنية LastName='Griffin' :
<?php $con = mysql_connect("localhost","root","root"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("DELETE FROM Persons WHERE LastName='Masri'"); mysql_close($con); ?>
بعد الحذف سيصبح الجدول كالتالي
FirstName | LastName |
---|---|
Ahmad | Jasem |
Fuad | Alasad |