PracticU

שימוש ב-Escape Characters ב-MySQL - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › שימוש ב-Escape Characters ב-MySQL - חלק 2
מילון מושגים:
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
הערה - טקסט בקוד שמסביר אותו לבני אדם ואינו מבוצע על ידי המחשב.
Postman - כלי לבדיקת API: שליחת בקשות HTTP לשרת ובחינת התגובות, נפוץ בפיתוח ובבדיקות.

שימוש ב-Escape Characters ב-MySQL - חלק 2
בשיעור מוצג פתרון שבו ספריית החיבור ל-MySQL עושה את ה-escape בעצמה, בלי שנשרשר ערכים לתוך השאילתה.
השלבים העיקריים
1. שימוש בפרמטרים: execute מקבל גם את השאילתה וגם מערך בשם values. במקום כל ערך כותבים סימן שאלה, והמערך מכיל את הערכים לפי הסדר.
2. escape אוטומטי: הספרייה עושה escape לכל ערך ומוסיפה גרשיים לטקסט, כך שאין צורך לעטוף את הערכים בגרשים או לשרשר אותם. ערך שלא נשלח הוא undefined, והמערכת מתעלמת ממנו.
3. בדיקה בנפרד: הקוד הישן נשמר כהערה להשוואה, והקוד החדש נבנה לידו ונבדק לפני שמחליפים.
4. עדכון חלקי עם מערך דינמי: רק השדות שהגיעו נוספים לשאילתה עם סימן שאלה, ובסוף מוסיפים גם את המזהה למערך עבור WHERE.
5. בדיקה ב-Postman: הוספה, שליפה, עדכון ומחיקה נבדקו, כולל שם עם גרש.
שימו לב
בשאילתה עם סימני שאלה הערכים במערך חייבים לבוא בסדר שבו הסימנים מופיעים. אחרת הערך יישמר בשדה הלא נכון.
בטעות כתבו ID במקום product.id, והשגיאה שהתקבלה הייתה ID is not defined. הבדיקה של השורה שבה הופיעה השגיאה פתרה את הבעיה.
בסוף השיעור הקוד בונה שאילתות בלי לשרשר ערכים ידנית, והגרשים מטופלים בעצמם.

פרקי ההרצאה: שימוש ב-Escape Characters ב-MySQL - חלק 2

  1. 00:00

    איך המערכת עושה escape בעצמה

  2. 00:43

    חתימה של query עם מערך values

  3. 01:19

    עדכון הפונקציה בשכבת הנתונים

  4. 03:13

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

  5. 04:36

    העברת הערכים לפי הסדר במערך

  6. 05:19

    גרשיים ו-escape שהמערכת מוסיפה לבד

  7. 05:57

    עדכון מלא עם סימני שאלה

  8. 06:41

    בניית מערך ערכים לעדכון חלקי

תמלול ההרצאה: שימוש ב-Escape Characters ב-MySQL - חלק 2

הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Escape Characters ב-MySQL - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אנחנו רוצים לראות איך המערכת עצמה יכולה לטפל בבעיה של ה-Escaped Character הזאת. אז לצורך כך אנחנו צריכים לעשות איזשהו שינוי ממש קטן בדל ולגשת לפונקציית Execute Async ולהגיד לה תשמעי בואי תקבלי גם את השאילתה וגם מערך שנקרא values.

  2. 00:30

    אני יכול לקרוא לו כמובן בכל שם ואז שאילתת query יש לה עוד העמסה, שימו לב, יש לה כמה העמסות. העמסה אחת היא אומרת תביאו לי את ה-string ואת ה-callback.

  3. 00:43

    העמסה נוספת, האמת היא פה, זה תביאו לי את ה-string של ה-SQL ו-values, ואז את ה-callback. אז בואו ניתן לפרמטר שני values.

  4. 00:59

    מה זה ה-values הזה? ה-values זה מערך שבכל הערכים שאנחנו רוצים לשבץ בתוך ה-SQL והשאילתה query, כלומר הפונקציה query אוטומטית תיקח את הערכים האלה ותעשה להם escaped character אוטומטית.

  5. 01:19

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

  6. 01:32

    דרך אגב, אותו דל בדיוק אם השינוי הזה תומך גם בשאילתות הרגילות שאנחנו עושים, פשוט אם יש פה undefined אז המערכת מתעלמת לחלוטין ב-undefined אם לא שלחנו value, כי כרגע בפרודקטס לוג'יק אנחנו קוראים לפונקציה הזאת, אני לא בפרודקטס לוג'יק, פה,

  7. 01:54

    אנחנו קוראים ל-execute ושולחים לה רק את השאילתה והכל בסדר כי אז ה-value זה יהיה undefined וה-query תוכל לעבוד בצורה הזאת. אבל אנחנו צריכים עכשיו כן לשלוח את ה-values בשביל לטפל בסיטואציה.

  8. 02:11

    אז בואו רגע ניפטר מהקונטרולר פה, הקונטרולר הוא לא משנה לנו ולמעשה אני לא רוצה למחוק את כל הדוגמה הזאת. אז מה שאני אעשה, אני אגדיר שזה product logic 1, בואו נראה רק שהוא שינה לי את זה ל-product logic הוא לא שינה לי, זה אחד ובואו נשכפל אותו לפרודקטס לוג'יק 2 כי יש לנו פה ממש שינוי גדול שאנחנו צריכים לבצע.

  9. 02:49

    בואו נשכפל את כל זה, נשים את 1 בהערה ואנחנו כרגע מתחברים לפרודקטס לוג'יק 2. 1 עובד פרפקט הוא מבצע את הקוד שלו אנחנו יכולים להשתמש בו הכל בסדר.

  10. 03:04

    2 הולך להיות משהו קצת אחר. כל שאילתא שמכילה דאטה, בואו רגע טיפה נקטין את כל הכתב הזה. כל שאילתא שמכילה דאטה, כשאנחנו רוצים לשלב, הנה אנחנו רואים פה את ה-ID לדוגמה, אז אנחנו רוצים לקרוא לשאילתא בצורה קצת אחרת, להשתמש בדאטה בצורה קצת אחרת.

  11. 03:28

    כאן אין לי דאטה שאני שולח, אז אני משאיר את השאילתא as is. אבל כאן, מה שאני עושה, אפילו שזה מספרים, דרך אגב, גם אם זה מספרים עושים את זה, במקום הדאטה עצמו כל מה שאני עושה אני שם סימן שאלה אז הנה יש לנו פה סימן שאלה ואז לפונקציה אסינק אקסקיוט אסינק אני שולח את השאילתה שיש

  12. 03:57

    לה סימני שאלה ואת המערך עם הווליוז במקום לשרשר את ה-id לזה אז אנחנו פשוט מכניסים אותו למערך הזה ואת זה אנחנו רוצים לעשות בכל מקום דרך אגב עכשיו לא לא צריך את ה-String Interpolation במקרה הזה, אפשר להשתמש במכרוזת רגילה, לא שזה כזה משנה עכשיו.

  13. 04:27

    בואו נעשה את זה כאן. פה אנחנו כמובן לא עושים את השרשור הזה, את ה-Escape בעצמנו, אז ניפטר מזה ונחזיר product.name לפה. נחליף את השאילתה למכרוזת רגילה בשביל שיהיה פה אחיד, ובמקום כל הדבר הזה אנחנו שמים סימני שאלה.

  14. 04:56

    אבל, הנה האבל שיש פה, שימו לב, בגלל שהמערכת עושה לנו אסקייפט, אז היא שמה לנו אוטומטית את שני החבר'ה האלה. זאת אומרת שאנחנו אפילו לא צריכים לעטוף בגרש גרש את הערכים שהן מכרוזות. זאת אומרת שהמערכת האוטומטית גם עוטפת לנו הכל בגרש

  15. 05:22

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

  16. 05:37

    הערך הראשון הוא product.name הולך להיכנס לפה כי הוא הראשון, פסיק product.price שני product.stock שלישי בואו נלך ל-update. נמחק את זה ונגיד לו במקום כל הסיפור הזה תן לי סימן שאלה במקום כל הסיפור הזה תן לי סימן שאלה תן לי סימן שאלה ובסוף סימן שאלה אין לי צורך בסטרינג אינטרפוליישן ותן לי את כל ה-values במערך לפי הסדר.

  17. 06:21

    אלה שלושת ה-values הראשונים וזה ה-value הבא בתור. ID הוא האחרון. Good. מה אנחנו רוצים לעשות ב-update partial?

  18. 06:41

    ב-update partial אנחנו רוצים לעשות משהו קצת אחר. בגלל שאנחנו לא תמיד יודעים כמה ערכים היוזר הכניס, בואו נעשה את הדבר הבא:

  19. 06:55

    נייצר מערך values, ואז פשוט נבוא ונגיד כזה דבר: אם יש לנו product.name, אז נגיד לו שאנחנו רוצים סימן שאלה. סימן שאלה ואז product name שווה סימן שאלה.

  20. 07:18

    בנוסף אנחנו רוצים לגשת לvalues ולהוסיף את product.name אותו הדבר בואו נעשה כאן. הנה יש לנו unit price הנה הסימן שאלה שלו פה מאיזושהי סיבה חסר לי נקודה פסיק גם כאן וזה אומר שחסר לי גם פה נקודות פסיק.

  21. 07:50

    לא שזה עושה משהו לג'אווה סקריפט אבל למען האחידות. ואנחנו רוצים לגשת ל-values ולהגיד שגם product.price שייך למשחק.

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: שימוש ב-Escape Characters ב-MySQL - חלק 1

ההרצאה הבאה: הסבר על NoSQL

הרצאות קשורות מקורסים אחרים

  • הרצאה על Azure MySQL
  • התקנה של mysql
  • פקודות בסיסיות ב-MySQL
  • UITextField - UITextFieldDelegate Validation of entered characters

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React