PHP היא שפת סקריפטים למטרות כלליות בקוד פתוח, שנמצאת בשימוש נרחב ליצירת דפי אינטרנט דינמיים ואינטראקטיביים. PHP יכולה לגשת למגוון גדול של מערכות ניהול מסדי נתונים יחסיים כגון MYSQL, SQLite , ו PostgreSQL . ה PHP 5.1 הגרסה הציעה ספריית הפשטה חדשה של חיבור מסד נתונים, כלומר אובייקטי PHP נתונים (PDO).
מה זה PDO?
PDO מתייחס אובייקט נתונים של PHP , שהיא תוסף PHP המגדיר ממשק קל משקל ועקבי לגישה למסד נתונים ב-PHP. זוהי קבוצה של הרחבות PHP המספקות מחלקת PDO ליבה ומנהל התקן ספציפי למסד נתונים. כל מנהל התקן של מסד נתונים יכול לחשוף תכונות ספציפיות למסד נתונים כפונקציית הרחבה רגילה המיישמת את ממשק PDO.
הערה: איננו יכולים לבצע כל סוג של פונקציית מסד נתונים באמצעות סיומת PDO עצמה. כדי לגשת לשרת מסד נתונים, עלינו להשתמש במנהל התקן PDO ספציפי למסד נתונים.
PDO מתמקד בעיקר בהפשטת גישה לנתונים ולא בהפשטת מסד נתונים. זה מספק שכבת הפשטה של גישה לנתונים , כלומר, ללא קשר לאיזה מסד נתונים אנו משתמשים, עלינו להשתמש באותן פונקציות המסופקות על ידי מסד נתונים זה כדי להנפיק שאילתות ולאחזר נתונים. PDO אינו מספק הפשטת נתונים, מכיוון שהוא אינו משכתב את ה-SQL או מחקה תכונות חסרות.
יתרון של PDO
PDO מספק דרכים שונות לעבוד עם אובייקטים ומחזיר הצהרות מוכנות שהופכות את העבודה להרבה יותר קלה. זהו כלי גישה לבסיסי נתונים ב-PHP שדרכו אנו מאפשרים גישה אחידה על פני מספר מסדי נתונים.
PDO מאפשר מעבר חלק יחסית בין מסדי נתונים ופלטפורמות שונות, שניתן לעשות בקלות על ידי שינוי מחרוזת החיבור. הוא אינו תומך בתחבירים ספציפיים למסד נתונים.
ישנם כמה יתרונות של PDO כדלקמן:
סיומת PDO יכולה לגשת לכל מסד נתונים שנכתב עבור מנהל התקן PDO. ישנם מספר מנהלי התקנים PDO זמינים המשמשים עבור FreeTDS, Microsoft SQL Server, Sybase, IBM DB2, Oracle Call Interface, Firebird/Interbase 6 , ו PostgreSQL מסדי נתונים, בין רבים נוספים.
הדרייברים לא זמינים בכל מערכת באופן אוטומטי, ולכן עלינו למצוא את הדרייברים הזמינים שלנו ולהוסיף כאלה כשאנחנו צריכים אותם.
ישנם תחבירים שונים זמינים ליצירת חיבור מסד הנתונים. תחבירים אלה תלויים במסדי נתונים ספציפיים. בזמן השימוש ב-PDO, יש לעטוף את הפעולות בבלוקים של ניסיון/תפוס ולהשתמש בטכניקת החריגה.
בדרך כלל, רק חיבור בודד צריך ליצור, וחיבורים אלה נסגרים על ידי תכנות מסד הנתונים כך שהוא ריק.
PDO מתיר להשתמש בחריגים לטיפול בשגיאות. כדי לייצר חריג, ניתן לאלץ את PDO לתוך תכונת מצב שגיאה רלוונטית.
ישנם שלושה מצבי שגיאה, כלומר, שקט (בְּרִירַת מֶחדָל), אַזהָרָה , ו יוצא מן הכלל . אזהרה וחריגה שימושיים יותר בתכנות DRY.
PDO מצמצם את פעולת ההוספה והעדכון הנפוצה של מסד הנתונים לתהליך דו-שלבי, כלומר.
הכן >> [כריכה] >> בצע.
באמצעות שיטה זו נוכל לנצל את מלוא ההצהרות המוכנות של PDO, המגנות מפני התקפות זדוניות באמצעות הזרקת SQL.
הצהרות מוכנות הן הצהרות SQL שהורכבו מראש שניתן לבצע מספר פעמים על ידי שליחת נתונים אלה לשרת. נתונים אלה, המשמשים בתוך מציין המיקום, מוגנים אוטומטית מפני התקפת הזרקת SQL.
יתרונות השימוש ב-PDO
PDO הוא מנהל ההתקן המקורי של מסד הנתונים. ישנם כמה יתרונות של שימוש ב-PDO המובאים להלן:
שיעורי PDO
ישנן שלוש מחלקות PDO, הניתנות להלן:
מסדי נתונים נתמכים על ידי PDO
- MySQL
- PostgreSQL
- נבואה
- ציפור אש
- MS SQL Server
- Sybase
- אינפורמיקס
- IBM
- FreeTDS
- SQLite
- קובריד
- 4D
השוואה בין PDO ל-MySQLi
כדי לגשת למסד הנתונים באמצעות PHP, יש לנו בעיקר שתי אפשרויות - MySQLi ו PDO (PHP Data Object). MySQLi הוא מקור עבור PHP המספק ביצועים מהירים יותר, בעוד שרוב המפתחים המנוסים מעדיפים לעבוד עם PDO מכיוון שהוא תומך במגוון רחב של מנהלי התקנים של מסד נתונים. ישנם כמה הבדלים בין PDO ל-MySQLi המפורטים להלן על סמך התכונות שלהם.
מאפיינים | PDO | MySQLi |
---|---|---|
תמיכה ב-DB | 12 נהגים שונים | MySQL בלבד |
חיבור | קַל | קַל |
ממשק API | לִפְתוֹחַ | OOP + נוהל |
ביצועים | מָהִיר | מָהִיר |
פרמטר בשם | כן | לא |
מיפוי אובייקטים | כן | כן |
נוהל מאוחסן | כן | כן |
הצהרות מוכנות בצד הלקוח | כן | לא |
בִּטָחוֹן | מאובטח יותר מ-MySQLi. | מאובטח אך לא יותר מ-PDO. |
מה יש להעדיף בין PDO או MySQLi?
גם ל-PDO וגם ל-MySQLi יש יתרונות משלהם:
- כפי שראינו קודם לכן ש-PDO עובד על 12 מערכות מסד נתונים שונות, בעוד MySQL יכול לעבוד רק עם מסד נתונים של MySQL. לכן, אם אנחנו רוצים להעביר את הפרויקט שלנו למסד נתונים אחר, PDO מקל על זה. ב-MySQLi, עלינו לשכתב את כל הקוד.
- PDO ו-MySQLi שניהם מונחה עצמים, אך MySQLi מציעה גם API פרוצדורלי. שניהם תומכים בהצהרות מוכנות. הצהרות מוכנות חשובות לאבטחת יישומי אינטרנט, מכיוון שהיא מגינה מפני הזרקת SQL.
דְרִישָׁה
אין צורך בספריות חיצוניות כדי לבנות את ההרחבה הזו.
תהליך התקנה
שלב 1: הורד את שרת XAMPP העדכני ביותר מכאן https://www.apachefriends.org/download.html עבור פלטפורמות שונות כמו Windows, Linux ו- MacOS.
זוג java
הערה: כאן נדון בתהליך ההתקנה עבור מערכת ההפעלה Windows בלבד.
שלב 2: התקן את שרת XAMPP במערכת שלך על ידי ביצוע השלבים הבאים.
שלב 3: בחר את הרכיבים שברצונך להתקין ולחץ על כפתור הבא.
שלב 4: צור את התיקיה החדשה עם השם xampp במיקום שבו ברצונך להתקין את XAMPP.
שלב 5: לחץ כאן על הבא והתקדם. ההתקנה של שרת XAMPP תתחיל מכאן.
שלב 6: XAMPP מותקן בהצלחה. לחץ על כפתור סיום.
שלב 7: בחר את השפה המועדפת.
שלב 8: הפעל מכאן את שרת Apache ואת MySQL (לפי צילום המסך הנתון).
שלב 9: כעת, פתח את php.ini מ C:/xampp/php/php.ini (היכן התקנת את ה-XAMPP שלך) ובטל את ההערה על התוסף 'php_pdo_mysql.dll' ו 'php_pdo.dll' (אם אתה עובד עם מסד נתונים MySQL), או 'php_pdo_oci.dll' (אם אתה עובד עם מסד נתונים של Oracle). כעת, התחל לעבוד עם מסד הנתונים. בגרסה העליונה של PHP 5.1, זה כבר מוגדר.
עבודה עם PDO
ראשית עלינו ליצור מסד נתונים, אז צור מסד נתונים בשם myDB מכאן.
חיבור למסד נתונים
חיבור למסד נתונים נדרש תמיד כדי ליצור אינטראקציה עם מסד הנתונים. אז, אנחנו צריכים לדעת את המזהה כדי לגשת למסד הנתונים, כלומר, מיקום מסד הנתונים, שם מסד הנתונים, שם המשתמש והסיסמה.
כעת, צור את תוכנית חיבור מסד הנתונים באמצעות PDO בכל עורך טקסט כגון פנקס רשימות או פנקס רשימות++ ושמור אותה לפי שם coonection.php. הפעל אותו בשרת XAMPP באמצעות localhost/80.
דוגמא
getMessage(); } ?>
תְפוּקָה
הפעל אותו בשרת באמצעות כתובת האתר הבאה localhost/Xampp/pdoexample/connection.php/ או היכן שמרת את התוכנית שלך.
טיפול בשגיאת חיבור
אובייקט PDOException ייזרק אם יש שגיאת חיבור כלשהי. אנו עשויים לתפוס את החריג אם ברצוננו לטפל במצב השגיאה, או שנוכל גם להשאיר אותו למטפל חריגים גלובלי שניתן להגדיר על ידי set_exception_handler() פוּנקצִיָה.
דוגמא
בדוגמה זו, dbUser(user-id) שגוי, ולכן הוא יזרוק חריג, כפי שאנו יכולים לראות בפלט.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Echo 'Successfully connected with myDB database'; } catch(Exception $e){ Echo 'Connection failed' . $e->getMessage(); } ?>
סגירת חיבור מסד הנתונים
getMessage(); } // this command close the connection. $dbConn = null; ?>
תְפוּקָה