מסדי נתונים / בחירת מסד הנתונים האידיאלי / Escape Sequences ומסד הנתונים שלך


Escape Sequences ומסד הנתונים שלך


ביום השלישי השתעשעתי עם מספר תקליטים, אחד מהם נקרא "We Can't Dance" זהו שם שבחיים לא יוכל להיכנס כמחרוזת לתוך מסד נתונים דרך MySQL,מכיוון שMySQL משתמש בסימן ' כסמן למחרוזת!.

המגבלה המעיקה שבה רק עתה נתקלנו ניתנת לפתרון מהיר ע"י הוספת הסימן / לפני ה - ' :

mysql> insert into albums(title,artist,released) -> values('We Can\'t Dance','Genesis','1991-01-01');


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

קוד הePerl שיעזור לך יראה ככה:


$foo = $query->param('foo'); $foo =~ s/'/\\'/g; # this Perl command will substitute ' with \' $SQL = <<"EOT"; insert into my_table(my_column) values ('$foo') EOT


זה רעיון רע מאוד לקוד מכמה סיבות:

נכון שMySQL משתמש בקו אלכסוני הפוך כדי לדלג מעל הסימנים השונים, אבל זה לא אומר שכל מסד נתונים משתמש באותה שיטה בדיוק. הכללת הקו האלכסוני ההפוך כחלק מהקוד תגביל את הגמישות של התוכנית.
בעיה אחרת עם הקוד היא שהוא מטפל רק ב - ' ולא בסימנים אחרים שגם הם צריכים טיפול זהה.
איזה סימנים? זה משתנה ממסד נתונים אחד למשנהו.
אל תנסו אפילו לחפש את הסימנים האלו בקבצי העזרה או לשנן את כולם. אתם סתם תבזבזו את זמנכם בהתמודדות עם המון טעויות אנוש מרגיזות.
תנו ל $dbh->quote לעשות את העבודה בשבילכם, בגלל שהוא יעשה זאת בדרך הנכונה, בכל פעם, בכל מסד נתונים.

$foo = $dbh->quote($query->param('foo'));


$query->param('foo') יחזיר את ערך הטקסט שהוכנס לfoo, ו $dbh->quote יטפל בערכים הבעייתים, בהתאמה לסוג מסד הנתונים שבו אתם עובדים.

עוד דבר ש $dbh->quote מספק הוא מירכאות במקומות המתאימים, כך שנחסך לכם זמן ההקלדה שלהן.



עמוד הבא: הטבעת ביטויים יחסיים במחרוזת Here-Document >>




מבט כללי
שעור 1
הטכנולוגיה הלא נכונה
לבעיה הלא נכונה

דמיין את כל האנשים
(נכנסים לאתר שלך)

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

Windows NT לעומת
Linux

התקנת לינוקס והתוכניות
הנלוות

ציפיות
שעור 3
מבוא
MySQL ושאר עניני
שרת/מסד נתונים

MySQL,SQL,DDL
ו-DML

סיכום
שעור 4
פילוסופית ה-Embedded
Web-Programming

ePerl-כשפרל פוגשת את
HTML

DBI-ממשק מסד הנתונים
של פרל

הדרך שלפנינו
שעור 5
מתחילים לעבוד
CGI.pm הבלתי נמנע
Escape Sequences
ומסד הנתונים שלך >
הטבעת ביטויים יחסיים
במחרוזת
Here-Document

הטבעת תת-רוטינות
מחברים את הכל
מטפלים בטפסים עם
שאילתות SQL

מעבדים את תוצאות
הטופס עם-CGI.pm