הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 05-12-15, 12:21   # 1
Programnnd
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 143

Programnnd לא מחובר  

מדריך | מה זה 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
ומי שמעביר אותו הלאה אשמח שיציין זאת !
שבת שלום חברים .
__________________
XHTML - CSS3 - BOOSTRAP - JQUERY - AJAX - PHP - SQL - SECURITY SQL
benworksites@gmail.com


  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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