שגיאה רנדומאלית בMYSQL
-
יש לי API בו הלקוח יכול להעלות קובץ EXEL
ואני עושה לולאה ומכניס הכל למסד נתונים.כיוון שלפעמים יש מקפים וסימני שאלה ושאר סימנים שMYSQL לא אוהב
אני עושה חיפוש על כל שורה ומוסיף//
ליד כל המקומות הבעיתיים..אבל עדיין מידי פעם יש שגיאות
וכשאני מעלה את הקובץ שוב אחרי שניה זה עובר בלי שום שגיאה.הנה הלוג של השגיאה
בשורה הראשונה זה הסטרינג ששלחתי לSQL
בשני זה השגיאה2020/06/17 15:45:08 מה פירוש \\'מודה במקצת\\' ? 2020/06/17 15:45:08 Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'מודה במקצת\\' ?','4')' at line 1
בפעם השניה אין לי לוג
כי לא עשיתי לוג לכל הצלחה.אבל זה אותו קובץ אחרי חצי דקה לאותו שרת
מה זה יכול להיות?זה הפונקציה שמתקנת את הסטרינגים
func MysqlFixString(value string) string { replace := map[string]string{"\\": "\\\\", "'": `\'`, "\\0": "\\\\0", "\n": "\\n", "\r": "\\r", `"`: `\"`, "\x1a": "\\Z"} for a, b := range replace { value = strings.Replace(value, b, a, -1) } return value }
-
@nigun לא נשמע רעיון מוצלח לעשות אסקייפינג לבד, עדיף להשתמש בכלים המובנים של החבילה
https://stackoverflow.com/questions/26345318/how-can-i-prevent-sql-injection-attacks-in-go-while-using-database-sql -
@יוסף-בן-שמעון
הכלים האלו מגינים מפני sql injection
האם הם פותרים גם את הבעיה של הסימנים המיוחדים? -
@יוסף-בן-שמעון
הכי טוב לנסות
אני ינסה ויעדכן.
(סתם ככה זה טוב להתרגל להשתמש בזה, בגלל sql injection) -
@יוסף-בן-שמעון
נראה שאכן עובד
הכנסי את הסטרינג;``’’’’????\’!@#$%^&*()_-+=*/-+...’’’’""""\\|||
וזה נכנס בלי בעיה.