0% found this document useful (0 votes)
4 views7 pages

1 - Mysql 2 - PHP Mysql 3 - 4 - (Prepared Statements) 5 - (Stored Procedures)

تتناول المحاضرة تقنيات الويب 2 وقواعد البيانات في PHP، مع التركيز على MySQL كأكثر أنظمة قواعد البيانات شيوعًا. تشمل الموضوعات الرئيسية الاتصال بـ MySQL، استعلامات قاعدة البيانات، العبارات المحضرة، والإجراءات المخزنة. كما تتناول كيفية إنشاء قواعد البيانات والجداول وإدخال البيانات باستخدام PHP.

Uploaded by

anas almamary
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views7 pages

1 - Mysql 2 - PHP Mysql 3 - 4 - (Prepared Statements) 5 - (Stored Procedures)

تتناول المحاضرة تقنيات الويب 2 وقواعد البيانات في PHP، مع التركيز على MySQL كأكثر أنظمة قواعد البيانات شيوعًا. تشمل الموضوعات الرئيسية الاتصال بـ MySQL، استعلامات قاعدة البيانات، العبارات المحضرة، والإجراءات المخزنة. كما تتناول كيفية إنشاء قواعد البيانات والجداول وإدخال البيانات باستخدام PHP.

Uploaded by

anas almamary
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

‫تقنيات الويب ‪2‬‬

‫قواعد البيانات في ‪PHP‬‬


‫المحاضرة ‪5‬‬

‫محمد سلطان‪ :‬المحاور الرئيسية‬

‫ما هي ‪MySQL‬؟‬ ‫‪.1‬‬


‫االتصال بـ ‪ PHP‬إلى ‪MySQL‬‬ ‫‪.2‬‬
‫استعالمات قاعدة البيانات‬ ‫‪.3‬‬
‫العبارات المحّضرة (‪)Prepared Statements‬‬ ‫‪.4‬‬
‫اإلجراءات المخزنة (‪)Stored Procedures‬‬ ‫‪.5‬‬

‫‪PHP‬‬

‫يمكن استخدام ‪ PHP‬لالتصال بقواعد البيانات وإدارتها‪.‬‬ ‫‪‬‬


‫‪ MySQL‬هو أكثر أنظمة قواعد البيانات شيوًعا المستخدمة مع ‪.PHP‬‬ ‫‪‬‬

‫ما هي ‪MySQL‬؟‬

‫نظام قاعدة بيانات ُيستخدم على الويب‪.‬‬ ‫‪‬‬


‫يعمل ‪ MySQL‬على الخوادم‪.‬‬ ‫‪‬‬
‫مثالي للتطبيقات الصغيرة والكبيرة‪.‬‬ ‫‪‬‬
‫سريع‪ ،‬موثوق‪ ،‬وسهل االستخدام‪.‬‬ ‫‪‬‬
‫يستخدم ‪ SQL‬القياسية‪.‬‬ ‫‪‬‬
‫يمكن تشغيله على عدة منصات‪.‬‬ ‫‪‬‬
‫مجاني للتنزيل واالستخدام‪.‬‬ ‫‪‬‬

‫كيفية تخزين البيانات في ‪MySQL‬؟‬

‫البيانات في ‪ُ MySQL‬تخَّز ن في جداول‪ ،‬وكل جدول عبارة عن مجموعة بيانات ذات صلة‬ ‫‪‬‬
‫مكونة من أعمدة وصفوف‪.‬‬
‫قواعد البيانات مفيدة لتخزين المعلومات بشكل منظم مثل‪:‬‬ ‫‪‬‬
‫الموظفين‬ ‫‪o‬‬
‫المنتجات‬ ‫‪o‬‬
‫العمالء‬ ‫‪o‬‬
‫الطلبات‬ ‫‪o‬‬

‫نظام ‪ PHP‬مع ‪MySQL‬‬


‫يوفر التكامل بين ‪ PHP‬و‪ MySQL‬إمكانية العمل على جميع األنظمة األساسية (‪Cross-‬‬ ‫‪‬‬
‫‪.)Platform‬‬
‫يمكن لـ ‪ PHP 5‬واإلصدارات األحدث االتصال بـ ‪ MySQL‬باستخدام‪:‬‬ ‫‪‬‬
‫‪( MySQLi‬اإلصدار المحسن من ‪.)MySQL‬‬ ‫‪o‬‬
‫‪( PDO‬كائنات بيانات ‪.)PHP‬‬ ‫‪o‬‬

‫‪ MySQLi‬أم ‪PDO‬؟‬

‫‪ :PDO‬يعمل مع ‪ 12‬نظام قاعدة بيانات مختلف‪ ،‬مما يجعله مناسًبا إذا كنت بحاجة إلى‬ ‫‪‬‬
‫تغيير قاعدة البيانات المستخدمة في المشروع‪.‬‬
‫‪ :MySQLi‬يدعم فقط قواعد بيانات ‪.MySQL‬‬ ‫‪‬‬

‫الواجهات المزدوجة لـ ‪MySQLi‬‬

‫يدعم ‪ MySQLi‬البرمجة اإلجرائية والبرمجة الكائنية‪.‬‬ ‫‪‬‬


‫واجهة ‪ MySQLi‬اإلجرائية تشبه إلى حد كبير الواجهة القديمة الخاصة بـ ‪.MySQL‬‬ ‫‪‬‬
‫العديد من وظائف ‪ MySQLi‬لها نفس األسماء ولكنها تختلف فقط في طريقة التعامل مع‬ ‫‪‬‬
‫المعلمات‪.‬‬

‫استعالمات قاعدة البيانات‬

‫االستعالم هو سؤال أو طلب يتم إرساله لقاعدة البيانات للحصول على معلومات معينة‪.‬‬ ‫‪‬‬
‫مثال‪:‬‬ ‫‪o‬‬
‫‪;SELECT * FROM students‬‬ ‫‪o‬‬

‫تعامل ‪ PHP‬مع النماذج (‪)Forms‬‬

‫يتم إرسال نموذج ‪ GET( HTML‬أو ‪ )POST‬إلى ملف ‪.PHP‬‬ ‫‪‬‬


‫المعلومات من النموذج ُتصبح متاحة تلقائًيا للملف‪.‬‬ ‫‪‬‬
‫مثال‪:‬‬ ‫‪o‬‬
‫‪o‬‬ ‫>"‪<form action="foo.php" method="POST‬‬
‫‪o‬‬ ‫>‪: <input type="text" name="username"><br‬االسم‬
‫‪o‬‬ ‫>‪: <input type="text" name="email"><br‬البريد اإللكتروني‬
‫‪o‬‬ ‫>"!‪<input type="submit" name="submit" value="Submit me‬‬
‫‪o‬‬ ‫>‪</form‬‬

‫خطوات التعامل مع قاعدة البيانات‬


:MySQL ‫االتصال بخادم‬ .1

;connection = mysql_connect("localhost", $username, $password)$

:‫الوصول إلى قاعدة البيانات‬ .2

;mysql_select_db("moh", $connection)

.‫تنفيذ العمليات على قاعدة البيانات‬ .3


:‫إنهاء االتصال بالخادم‬ .4

;mysql_close($connection)

)‫ (إجرائي‬MySQLi ‫ باستخدام‬MySQL ‫االتصال بـ‬

:‫مثال‬ 
;"servername = "localhost$ 
;"username = "username$ 
;"password = "password$ 

;conn = mysqli_connect($servername, $username, $password)$ 

{ if (!$conn) 
;die("Connection failed: " . mysqli_connect_error()) 
} 
;"echo "Connected successfully 

;mysqli_close($conn) 

‫التعامل مع األخطاء‬

.‫ في حالة الفشل‬FALSE ‫ أو‬NULL ‫_ القيمة‬mysql ‫تعيد جميع وظائف‬ 


:‫يمكن استخدام الوظائف التالية للتعامل مع األخطاء‬ 
.‫ إليقاف التنفيذ وعرض رسالة‬die(string) o
.‫() إلرجاع رقم الخطأ‬mysql_errno o
.‫() إلرجاع نص الخطأ‬mysql_error o

PHP ‫إنشاء قاعدة بيانات باستخدام‬

.‫يمنح امتيازات خاصة إلنشاء قاعدة بيانات‬ 


:‫مثال‬ 
 $sql = "CREATE DATABASE myDB";
 if (mysqli_query($conn, $sql)) {
 echo "Database created successfully";
 } else {
 echo "Error creating database: " . mysqli_error($conn);
 }
 mysqli_close($conn);

)Prepared Statements( ‫استخدام العبارات المحّض رة‬

.‫ وتزيد من الكفاءة عند تنفيذ نفس العبارة مراًر ا‬SQL Injection ‫تحمي من هجمات‬ 
:‫تنقسم إلى مرحلتين‬ 
.‫ إرسال قالب العبارة إلى الخادم‬:‫التحضير‬ .1
.‫ ربط القيم وإرسالها إلى الخادم‬:‫التنفيذ‬ .2
 ‫مثال‬:
 $stmt = $mysqli->prepare("INSERT INTO test(id, label) VALUES
(?, ?)");
 $id = 1;
 $label = 'PHP';
 $stmt->bind_param("is", $id, $label);
 $stmt->execute();

)Stored Procedures( ‫اإلجراءات المخزنة‬

‫هي إجراءات مخزنة مسبًقا داخل قاعدة البيانات يمكن استدعاؤها باستخدام عبارة‬ 
.CALL
 :‫مثال‬
 $mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO
test(id) VALUES(id_val); END;");
 $mysqli->query("CALL p(1)");

‫أي أسئلة؟‬

PHP ‫ باستخدام‬MySQL ‫تشغيل االستعالمات في‬

‫تنفيذ استعلام‬

:‫ ُتعيد مؤشًر ا للنتائج‬mysql_query 


;result = mysqli_query($conn, $query)$ 

:‫ ُتحدد عدد الصفوف الُمعادة‬mysql_num_rows 


;num_rows = mysqli_num_rows($result)$ 

:‫ ُتنشئ مصفوفة أو جدول بيانات من النتيجة‬mysql_fetch_array 


{ for ($n = 0; $n < $num_rows; $n++) 
;row = mysqli_fetch_array($result)$ 
} 

‫طباعة الصفوف‬

:‫عن طريق األرقام‬ 


 for ($i = 0; $i < mysqli_num_fields($result); $i++) {
 echo $row[$i] . " ";
} 

:‫عن طريق اسم الحقل‬ 


;echo $row['surname'] . ' ' . $row['city'] 

PHP ‫إنشاء جدول باستخدام‬

‫تعريف الجدول‬

 ‫ استخدام عبارة‬CREATE TABLE ‫ إلنشاء جدول في‬MySQL.


‫مثال‬:
 CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
 );
‫تنفيذ إنشاء الجدول‬

 ‫ تنفيذ االستعالم عبر‬PHP:


 $sql = "CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
 )";

 if (mysqli_query($conn, $sql)) {
 echo "Table MyGuests created successfully";
 } else {
 echo "Error creating table: " . mysqli_error($conn);
 }

 mysqli_close($conn);

‫إدخال البيانات في قاعدة البيانات‬

‫خطوات الإدخال‬

.HTML ‫جمع البيانات من نموذج‬ .1


.PHP ‫ أو‬JavaScript ‫التحقق من البيانات باستخدام‬ .2
.‫إنشاء االستعالم‬ .3
4. ‫تنفيذ االستعالم باستخدام‬:
5. $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES
('John', 'Doe', '[email protected]')";
6. if (mysqli_query($conn, $sql)) {
7. echo "New record created successfully";
8. } else {
‫‪9.‬‬ ‫;)‪echo "Error: " . $sql . "<br>" . mysqli_error($conn‬‬
‫} ‪10.‬‬
‫;)‪11. mysqli_close($conn‬‬
‫تنفيذ استعلامات متعددة‬

‫الستخدام استعالمات متعددة‪ ،‬استخدم ‪.)(mysqli_multi_query‬‬ ‫‪‬‬

‫العبارات المحّض رة (‪)Prepared Statements‬‬

‫تعريف‬

‫العبارات المحّضرة ُتستخدم لتنفيذ نفس االستعالم عدة مرات بكفاءة عالية وحماية من حقن‬ ‫‪‬‬
‫)‪.SQL (SQL Injection‬‬
‫تمر العبارات المحّضرة بمرحلتين‪:‬‬ ‫‪‬‬
‫اإلعداد (‪ :)Prepare‬إرسال قالب االستعالم إلى الخادم‪.‬‬ ‫‪.1‬‬
‫التنفيذ (‪ :)Execute‬ربط القيم وإرسالها للخادم‪.‬‬ ‫‪.2‬‬

‫مثال‬

‫‪‬‬ ‫‪:‬إنشاء استعالم محّضر‬


‫‪‬‬ ‫‪$stmt = $mysqli->prepare("INSERT INTO test(id, label) VALUES‬‬
‫;)")? ‪(?,‬‬
‫‪‬‬ ‫;‪$id = 1‬‬
‫‪‬‬ ‫;'‪$label = 'PHP‬‬
‫‪‬‬ ‫للنص "‪"s‬للعدد الصحيح و "‪$stmt->bind_param("is", $id, $label); // "i‬‬
‫‪‬‬ ‫;)(‪$stmt->execute‬‬

‫استخدام ‪ LIMIT‬لتحديد عدد النتائج‬

‫التحديد باستخدام ‪LIMIT‬‬

‫لتحديد عدد الصفوف التي يتم إرجاعها‪:‬‬ ‫‪‬‬


‫‪‬‬ ‫;‪SELECT * FROM Orders LIMIT 30‬‬

‫‪‬‬ ‫‪:‬لتحديد نطاق معين‬


‫‪‬‬ ‫;‪SELECT * FROM Orders LIMIT 10 OFFSET 20‬‬

‫اإلجراءات المخزنة (‪)Stored Procedures‬‬

‫تعريف‬

‫اإلجراءات المخزنة هي إجراءات ُمعّر فة مسبًقا يتم تخزينها في قاعدة البيانات ويمكن‬ ‫‪‬‬
‫استدعاؤها باستخدام عبارة ‪.CALL‬‬

‫مثال‬

‫تعريف وتنفيذ إجراء مخزن‪:‬‬ ‫‪‬‬


 $mysqli->query("DROP PROCEDURE IF EXISTS p");
 $mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO
test(id) VALUES(id_val); END;");
 $mysqli->query("CALL p(1)");

 $result = $mysqli->query("SELECT id FROM test");
 var_dump($result->fetch_assoc());
‫أنواع المعاملات في الإجراءات المخزنة‬

.‫ إدخال القيم‬:IN 
.‫ إخراج القيم‬:OUT 
.‫ إدخال وإخراج القيم‬:INOUT 

‫مالحظات إضافية‬

MySQL: PHP.net: MySQLi Quick Start‫ و‬PHP ‫التوثيق الرسمي لـ‬ 

You might also like