667
צפיות
צפיות
16
תשובות
תשובות
איך עושים משפט SQL ש…
למשל, יש לי שדה בשם A. ברשומה מסויימת הערך שלו הוא "abcdef".
אני רוצה משפט SQL שאני לדוגמא אתן לו את הערך "abc" והוא יבדוק אם בשדה A קיים הערך הזה, אבל שיבדוק אם הוא קיים בתוך השדה, ולא אם השדה=לערך.
מקווה שאני ברור.. אם לא תגידו.
תודה לעוזרים.
16 תשובות
חפש על LIKE ב-manual של Mysql
באקסס למשל זה נעשה כך:
SELECT …
FROM …
WHERE <fld> Like "*A*"
לא מצאתי כלום על LIKE
זה לא מופיע בכלל..
הנה
יש משהו..
אופס הינה ההודעה:
יש משהו יותר יעיל מאשר:
SELECT Name FROM bla WHERE SUBSTRING(Name,1,1)<>"a" AND SUBSTRING(Name,1,1)<>"b" AND ………… SUBSTRING(Name,1,1)<>"z"
אני רוצה לבדוק את התו הראשון שבשדה Name, ולשלוף רק איפה שהתו הראשון בשדה הזה, לא מתחיל באחת מאותיות הABC..
יש משהו יותר יעיל מאשר מה שכתבתי למעלה?
(MySQL)
תודה
אם יש תמיכה ב NOT LIKE,
או בתבניות (כמו באקסס) אז כן.
אפפעם לא יצא לי לעבוד עם מסד הנתונים הזה ולכן אני לא יכול לומר לך בודאות, אבל אם לא תקבל תשובה ממישהו אחר אתה מוזמן לשאול גם בפורום בסיסי נתונים בתפוז, יש שם לא מעט מומחים לנושא.
איזה תווים אני צריך להחליף?
אני מקבל מידע שנשלח דרך טופס, המידע נכנס לבסיס נתונים.
אני מחליף את התווים " , > <
איזה עוד תווים יכולים לגרום לבעיות?
עוד משהו, אני יודע שגם את התו # צריך לסנן, כי הוא נחשב כהערה בSQL. אך כאן אין לו מחליף. יש למישהו רעיון בשבילי?
חשבתי על להחליף את # בקוד מסויים אבל זה יגרום לי להחליף את אותו קוד ב# בעמודי הצגת הנתונים, שזה קצת מסבך את העיניינים. יש עוד בעיה, יכול להיות שהקוד שאני יחליט להחליף את # בו, יהיה חלק טבעי מהטקסט שכתב המשתמש. הכוונה יכול להיות שאת הקוד הזה רצה המשתמש לכתוב ואני יציג אותו כ# בגלל ההגנה..
אני מקווה שאני מובן.
תודה רבה לעוזרים
תודה
מאמר בנושא XSS
ויש גם ב
.כדי להתגונן מפני SQL Injection, תוכל למצוא מאמר
. למרות שמשתמשים ב Command, עדיין מומלץ להחליף תווים בעיתיים.תודה! אבל עדיין יש בעיה..
אני מצטט משפט מהמאמר:
"יש להחליף את הסימנים # ואת הסימן & על ידי # והסימן & בהתאמה."
גם אחרי שאני יחליף את הסימנים בקוד שלהם, הסימנים בעצם ישארו, כי הקוד מורכב במקרה מהתווים # ו- &.
במה אני יכול להחליף את התווים האלה?
אתה צריך להחליף את הקלט של המשתמש
למה שלא ייצור בעיות אצלך!
אם המשתמש מכניס תווי יוניקוד/אסקיי אז אם אתה מחליף את התווים & ו-#
אז הקלט של המשתמש (תווי האסקיי והיוניקוד) יוראו למשתמש בחזרה ולא הפלט שלהם.
מובן ?
כן אבל…
בהודעה הקודמת שלי כתבתי:
"יש להחליף את הסימנים # ואת הסימן & על ידי # והסימן & בהתאמה."
זה לא יצא טוב. זה התיקון:
יש להחליף את הסימנים # ואת הסימן & על ידי &##35; והסימן &##38; בהתאמה.
אני רוצה לציין שבמקום שיהיה פעמיים את ה#, צריך להיות פעם אחת. רשמתי פעמיים כדי שהקוד הזה לא יהפוך לסימן עצמו כמו בהודעה הקודמת.
אז נגיד קיבלתי סטרינג מהמשתמש: "#&*". אני מחליף את התווים & ו-# ומקבל את המחרוזת: "&##35;&##38;*" (שוב, צריך להיות # אחד ולא שניים ברצף).
עד כאן הכל סבבה, חסמתי את התווים האלה אבל למשתמש זה יוצג כרגיל.
הבעיה היא, שאני מכניס את המחרוזות "&##35;&##38;*" למסד, ככה:
insert into tbl(str) values('" & str & "')"
כאשר str הוא המחרוזת "&##35;&##38;*" , זה בעצם ייצא ככה:
insert into tbl(str) values('&##35;&##38;*')"
עכשיו, הסימן "#", בSQL, הופך את הקוד שאחריו להערה. אז תיהיה שגיאה בקוד.
אני שואל, במה אני יכול להחליף את התו "#" כך שבכל זאת יוצג התו הזה למשתמש, אך לא יגרום בעיה בשאילתה.
תודה לעוזרים
מישהו יכול להקפיץ לי בבקשה?
תודה
למה להקפיץ?
מגיע לך איזה יחס מיוחד שלא מגיע לאחרים?
תן לאשכול הזה לרדת לדף הבא, ותפתח אשכול חדש כשתצטרך.
למה שלא תשתמש ב escape sequence של
התווים האלו,
או שתייצר לך איזה שהוא escape sequence מיוחד שלך לתווים בעיתיים.
אתה צריך להבין שמה שחשוב זה שתבצע ההמרה, ואם זה יקח עוד המרה אח"כ, אז העמסת עוד מיקרו שניה על השרת. אז מה?
טוב תודה