
הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Escape Characters ב-MySQL - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שהצלחנו בעצם לבצע את כל הפעולות שיש לנו ברסט פול סרוויס על ידי מיי sql יש לנו לטפל באיזושהי סיטואציה קטנה שהיא כמובן מהווה איזשהו באג שאנחנו צריכים להתייחס אליו.
בואו רגע נחזור לדאטאבייס מה שעשיתי זה ניקיתי את כל המוצרים אחרי 77 כלומר כל המוצרים המקוריים קיימים כל מה שהוספנו נקי ואני רוצה לגשת לפוסטמן ואני רוצה להוסיף מוצר חדש בוא נוסיף אפל שעולה 3.4 יש לי 120 במלאי ואני רוצה להוסיף אותו אז אני מבצע את הפוסט סנד אוי שאני רואה ששכחתי
להריץ גו, יופי. זה אפשר להוריד לפה. נחזור, נריץ שוב. והוסיף לנו, אני רואה, ID 88, בסדר? בואו נסתכל בדאטאבייס, נפרש.
ניגש פה למטה, אפל, כל עובד. אבל מה קורה אם השם של המוצר זה לא אפל, זה בוא נניח דאנז אפל, תפוח של דאם. זה המוצר, ככה נקראת החברה.
אני מבצע send, גורס, רגע, אבל מה, לא יכול להיות לי שם כזה? אז מה בעצם הבעיה כאן? אז אנחנו יודעים שגרש זה תו שהוא חלק מהתחביר של mysql, ליתר דיוק של fat sql, ופה אנחנו רואים שאם אנחנו רוצים להוסיף גרש, אז sql מתייחסת לגרש הזה
כאילו שזה חלק מהתחביר שלה. והוא אומר לי, תשמע, יש לי פה איזושהי בעיה עם אפל גרש, מה זה האפל גרש הזה, או סליחה, נירס גרש אס אפל, זה בעצם יותר נכון.
מה זה המחרוזת הזאת? זה מה שכתוב פה. הוא אומר, תשמע, זה סוגר לי את השם, ועם זה אין לי יותר מה לעשות, זה משהו שהוא לא הגיוני.
בואו ניכנס רגע וננסה פה להוסיף מוצר חדש. בואו נגיד שאנחנו רוצים לבצע הוספה, insert into Product, לתוך unit, סליחה, לתוך product name unit price, נסתפק רק בשני אלה כרגע, את ה-values האלה, ונעתיק בדיוק את הערכים שכתובים פה.
כתוב פה, Dan's Apple, זה מה שאני רוצה להוסיף, והוא עולה 3.4. כבר אנחנו רואים פה שהוא אומר לי, תשמע, יש לי פה איזושהי בעיה, אתה אמרת שהמוצר הוא Dan, פתחת גרש, מה זה בדיוק ה-S-Apple שתקוע לי פה?
אני לא יכול להוציא את זה לפועל בכלל. בואו רגע נעתיק את זה שהוא לא יעלים לי אותו, ננסה להוציא לפועל, בום, שגיאה, ברור. אוקיי, אז בואו נחזור ונראה איך אפשר לטפל בזה.
אפשר לטפל בזה בשתי דרכים. דרך אחת, כל גרש שאנחנו רוצים שהוא יהיה חלק מהטקסט ולא חלק מתחביר SQL שהיא מכרוזת שעוטפת, גרש טקסטואלי אפשר לשכפל אותו לפעמיים גרש.
ברגע שאנחנו כותבים גרש גרש מבחינת sql אם הוא רואה שהגרש גרש צמודים אז הוא יודע שהגרש הזאת היא גרש טקסטואלית שצריכה להיכנס לדאטה בהפקה גרש אחת ולא גרש של מחרוזת.
בואו נריץ את זה, בום הכל בסדר. בואו נסתכל על המוצר, ניגש פה למטה. ונראה שהוא הכניס לי דאנס אפל עם גרש אחת. מעולה. בואו רגע ניפטר משני אלה, נעשה להם delete.
כן, תמחק לי את זה. נחזור לשאילתת ה-SQL ונראה את הטכניקה השנייה. הטכניקה השנייה נקראת escape character. escape זה אומר לשים backslash לפני התו הבעייתי.
ויש כל מיני תווים בעייתיים שאנחנו יכולים לשים לפניהם וזה אומר לsql ששוב שזה גרש טקסטואלי ולא גרש שהוא חלק מהתחביר של sql ולא גרש מכורסתי בוא נגיד ככה בואו נריץ את זה אנחנו רואים שהוא הצליח נלך למוצרים נגלול פה למטה dance apple עם גרש אחת נמחק את זה כדי שכל הזמן נראה שאנחנו מצליחים להוסיף ואנחנו יכולים לחזור בחזרה ולראות איך אנחנו עושים את זה.
הקליינט הולך לשלוח לנו את זה. הקליינט לא הולך לשכפל גרש לפעמיים. הקליינט לא הולך לעשות אסקייפט קרקטר. הוא לא הולך לעשות את הדברים האלה. הוא מבחינתו, זה השם של המוצר.
תוסיף לי אותו בבקשה לדאטאבייס. אנחנו צריכים לעשות את זה ברמת ה-Business Logic שלנו. אז כאשר אנחנו חוזרים ל-Business Logic, בואו נניח ל-Add Product דרך אגב, הבעיה הזאת כמובן קיימת גם ב-update full וב-update partial.
אנחנו צריכים לגשת לכל מחוזת ואו לשכפל את הגרש בפעמיים או לעשות escaped character. אז בואו ניצר פה const name שווה product.name.replace. תאתר לי גרש אחת בשם, כל גרש שאתה מאתר, תן לי גרש גרש עבורה.
זאתי שיטה ראשונה ואז במקום כאן product.name אנחנו משתמשים ב-name הזה אוקיי יש לנו כאן את השיטה הראשונה בואו נעצור נריץ ניגש לפוסטמן נגיד לו הנה זה מה שאני רוצה שתוסיף לי go והוא מוסיף לגרש אחת אם אני אסתכל רגע על הדאטאבייס עצמו בואו נרפרש נראה שהוא באמת הוסיף לנו dance-apple עם גרש אחת ולא שתיים,
הנה זה פה,