הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   מדריך | מה זה PDO איך משתמשים בPDO ולמה זה טוב (https://hosts.co.il/forums/showthread.php?t=109642)

Programnnd 05-12-15 12:21

מדריך | מה זה PDO איך משתמשים בPDO ולמה זה טוב
 
שלום לכולם,
PDO מה זה בעצם "PHP Data Objects" = "שימוש בנתונים ובאובייקטים בשפת PHP" .
פעם היינו מבצעים חיבור למסד נתונים באמצעות MYSQL אך מהר מאוד האקרים הראו לנו שזה לא יעיל. אז פיתחו שיטה חדשה MYSQLI שהיא גם מהר מאוד התגלתה כלא יעילה ,
על מנת שנוכל להנות מצורה גמישה של התחברויות לכמעט כל סוגי מסדי הנתונים הקיימים ובצורה מאובטחת יותר משאר האופציות ויעילה ומסודרת יותר המציאות את PDO ,
היום אני עובד רק עם PDO לא תראו אותי מתחבר למסד נתונים בצורה רגילה , אז נתחיל :
יצירת חיבור בסיסי למסד נתונים מתבצע בצורה הבאה :
קוד:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=your_db_name', your_username, userpassword);
?>

אם כי אני ועוד המון מתכנתים ממליצים להכניס את החיבור לתוך try catch שבמידה ותיהיה בעיה בחיבור נוכל להציג את השגיאה הספציפית שעושה את הבעיה והקוד נראה משהו בצורה הזאת:
קוד:

<?php
  try {
    $dbh = new        PDO('mysql:host=localhost;dbname=dbname',username,password);
  } catch (PDOException $e) {
    echo 'the error is:<br />'.$e->getMessage();
    die(); //kill the connection
  }
?>

מה שטוב בשיטה הזאת שנקראת PDO היא שברגע שאנו מכניסים מידע למסד נתונים (INSERT או UPDATE) אנו משתמשים ב"ממלא מקום" והערך שאנו רוצים להכניס נכנס בעצם אחרי שהרצנו את הקוד ככה שאי אפשר להכניס נתונים לפני שהקוד רץ וזה מונע האקינג !, שאילתת INSERT נראת ככה:
קוד:

<?php
$insert = "INSERT INTO `tablename` (`colum1`,`colum2`) VALUES
(:colum1var,:colum2var)";
?>

פה בעצם הגדרנו הכנסת מידע לטבלה שאנו רוצים לעמודות שאנו רוצים ולהכניס את הערך של "ממלא המקום" שבקוד הבא הם נקראים "colum1var וcolum2var" (לפני ממלא מקום רושמים את התג הבא ":" ללא המרכאות שPHP PDO יבין שמדובר בממלא מקום ולא בערך .
מה שאנחנו עושים עכשיו זה 5 דברים נוספים:
1. הכנת השאילתה להרצה ע"י הפקודה prepare (ערכים : המשתנה שמחזיק את שאילתת הSQL)
2. הכנסת הערכים במקום ה"ממלאי מקום" באמצעות הפקודה bindParam
(ערכים : שם ממלא המקום , שם המשתנה שמחליף אותו , אם רוצים אפשר להוסיף את סוג המשתנה לא חובה: PDO::PARAM_STR מחרוזת / PDO::PARAM_INT מספרים )
3. מגדירים את ערכי המשתנה רק לאחר שביצענו את הפקודה bindParam על מנת למנוע כמה שפחות הזרקות קוד לשאילתה שלנו באמצעות משתנים רגילים לדוגמא:
$colum1var = 'הערך שלו' וכן הלאה .
4. הוצאת הקוד לפועל באמצעות הפקודה execute() שהערכים שהיא מחזירה זה TRUE בהצלחה או FALSE שהיא לא מצליחה (נצטרך את זה בהמשך .)
5. בודקים אם הקוד פועל קשורה באמצעות תנאי IF שיבדוק את הערכים החוזרים מהפקודה execute() .
אחרי שהסברתי לכם מה כל אחד ואחת מהפקודות כאן עושים להלן הקוד הסופי :
קוד:

<?php
$insert = "INSERT INTO `tablename` (`colum1`,`colum2`) VALUES
(:colum1var,:colum2var)"; // השאילתה שלנו

$insert_query = $dbh->prepare($sql); // הכנת השאילתה להרצה

$insert_query->bindParam(':colum1var',$colum1var); // החלפת ממלא המקום בערך של המשתנה שנקבע
$insert_query->bindParam(':colum2var',$colum2var); // החלפת ממלא המקום בערך של המשתנה שנקבע

$colum1var = 'הערך של המשתנה הראשון';
$colum2var = 'הערך של המשתנה השני';

if ($insert_query->execute() == true) { // הרצת השאילתה ובדיקה אם הכול עבר חלק והפקודה בוצעה או שלא  באמצעות הערכים true false
        echo 'insert to the database';
} else {
        echo 'not insert to the database';
}

?>

עד לכאן החלק הראשון של PDO (php data objects) אז מה למדנו היום ?:
התחברות למסד נתונים באמצעות PDO .
ביצוע שאילתת INSERT .
מה זה bindParam מה זה execute מה זה query מה זה perpare מה הערכים שניתן להביא לכל אחד מהם ואיך משתמשים בהם והבאנו גם דוגמאות .
במידה ואראה שיש ביקוש אכתוב מדריך נוסף על פקודת הUDAPTE DELETE SELECT על אבטחת מידע במסד נתונים ועל כל מיני דברים שקשורים לשפת PHP
אם יש לכם מדריך ספציפי שברצונכם ללמוד משהו ספציפי אנא שלחו לי בפרטי אשמח לפרסם בשבילכם .
המדריך נכתב ע"י Programnnd לפורום HOSTS
ומי שמעביר אותו הלאה אשמח שיציין זאת !
שבת שלום חברים .


כל הזמנים הם GMT +2. הזמן כעת הוא 23:34.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ