PracticU

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

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › שימוש ב-Escape Characters ב-MySQL - חלק 1
מילון מושגים:
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.

שימוש ב-Escape Characters ב-MySQL - חלק 1
בשיעור רואים בעיה שמופיעה כשמכניסים לשאילתת SQL מחרוזת שמכילה גרש, ומתחילים לפתור אותה בשתי דרכים.
השלבים העיקריים
1. הבעיה: השם Dan's Apple עם גרש בתוכו שובר את השאילתה, כי MySQL מפרש את הגרש כחלק מהתחביר ולא כחלק מהטקסט.
2. שכפול הגרש: אפשר לכתוב גרש כפול בתוך הערך. כך MySQL מבין שזה גרש טקסטואלי ולא סוף המחרוזת. בשיטה הזאת ההוספה הצליחה, והשם נשמר עם גרש אחד.
3. Escape character: שיטה נוספת היא להוסיף backslash לפני הגרש. בדוגמה השיטה לא עבדה בהתחלה, כי ה-backslash הוא תו מיוחד גם ב-JavaScript. כדי לשלוח backslash אמיתי צריך להכפיל אותו.
4. טיפול ב-Business Logic: ההחלפה נעשית על השם לפני בניית השאילתה, ובאותו אופן ב-update full וב-update partial.
שימו לב
הלקוח לא שולח גרש כפול ולא תו מיוחד, כי הוא שולח רק את שם המוצר כפי שהוא. לכן השרת צריך לטפל בזה בעצמו.
בסוף השיעור אפשר להוסיף שמות עם גרשיים בלי שהשאילתה תישבר.
השיעור הבא בקורס: שימוש ב-Escape Characters ב-MySQL - חלק 2

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

  1. 00:00

    באג שנובע מתווים מיוחדים בשאילתה

  2. 01:00

    הוספת מוצר חדש בפוסטמן

  3. 01:40

    שם מוצר עם גרש שגורם לשגיאה

  4. 02:18

    ניסיון הוספה ידנית בשאילתת INSERT

  5. 03:37

    הכפלת גרש בתוך הטקסט

  6. 04:37

    טכניקת escape character עם backslash

  7. 05:33

    הטיפול בגרש צריך להיות בלוגיקה העסקית

  8. 06:14

    החלפת גרש בשם המוצר עם replace

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

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

  1. 00:02

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

  2. 00:22

    בואו רגע נחזור לדאטאבייס מה שעשיתי זה ניקיתי את כל המוצרים אחרי 77 כלומר כל המוצרים המקוריים קיימים כל מה שהוספנו נקי ואני רוצה לגשת לפוסטמן ואני רוצה להוסיף מוצר חדש בוא נוסיף אפל שעולה 3.4 יש לי 120 במלאי ואני רוצה להוסיף אותו אז אני מבצע את הפוסט סנד אוי שאני רואה ששכחתי

  3. 00:58

    להריץ גו, יופי. זה אפשר להוריד לפה. נחזור, נריץ שוב. והוסיף לנו, אני רואה, ID 88, בסדר? בואו נסתכל בדאטאבייס, נפרש.

  4. 01:17

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

  5. 01:40

    אני מבצע send, גורס, רגע, אבל מה, לא יכול להיות לי שם כזה? אז מה בעצם הבעיה כאן? אז אנחנו יודעים שגרש זה תו שהוא חלק מהתחביר של mysql, ליתר דיוק של fat sql, ופה אנחנו רואים שאם אנחנו רוצים להוסיף גרש, אז sql מתייחסת לגרש הזה

  6. 02:05

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

  7. 02:22

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

  8. 02:32

    בואו ניכנס רגע וננסה פה להוסיף מוצר חדש. בואו נגיד שאנחנו רוצים לבצע הוספה, insert into Product, לתוך unit, סליחה, לתוך product name unit price, נסתפק רק בשני אלה כרגע, את ה-values האלה, ונעתיק בדיוק את הערכים שכתובים פה.

  9. 03:02

    כתוב פה, Dan's Apple, זה מה שאני רוצה להוסיף, והוא עולה 3.4. כבר אנחנו רואים פה שהוא אומר לי, תשמע, יש לי פה איזושהי בעיה, אתה אמרת שהמוצר הוא Dan, פתחת גרש, מה זה בדיוק ה-S-Apple שתקוע לי פה?

  10. 03:20

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

  11. 03:33

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

  12. 03:53

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

  13. 04:11

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

  14. 04:33

    כן, תמחק לי את זה. נחזור לשאילתת ה-SQL ונראה את הטכניקה השנייה. הטכניקה השנייה נקראת escape character. escape זה אומר לשים backslash לפני התו הבעייתי.

  15. 04:50

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

  16. 05:33

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

  17. 05:47

    תוסיף לי אותו בבקשה לדאטאבייס. אנחנו צריכים לעשות את זה ברמת ה-Business Logic שלנו. אז כאשר אנחנו חוזרים ל-Business Logic, בואו נניח ל-Add Product דרך אגב, הבעיה הזאת כמובן קיימת גם ב-update full וב-update partial.

  18. 06:04

    אנחנו צריכים לגשת לכל מחוזת ואו לשכפל את הגרש בפעמיים או לעשות escaped character. אז בואו ניצר פה const name שווה product.name.replace. תאתר לי גרש אחת בשם, כל גרש שאתה מאתר, תן לי גרש גרש עבורה.

  19. 06:30

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

  20. 07:09

    הנה זה פה,

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

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

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

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

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

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

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