עבור לתוכן

ASP - בעיה בעידכון

Featured Replies

פורסם

<%
Set dbCon = Server.CreateObject("ADODB.Connection")
dbCon.open "Provider=Microsoft.JET.OLEDB.4.0;Data source=" & Server.mappath("../Data/DataBase.mdb")

mySQL = "UPDATE accounts"
mySQL = "mySQL & SET UserName='"& Request.Form("username") &"', pass='"& Request.Form("pas1") &"', Email='"& Request.Form("mail1") &"', FirstName='"& Request.Form("firstname") &"', LastName='"& Request.Form("lastname") &"', Gender='"& Request.Form("gender") &"'"
mySQL = "WHERE UserName='"& Request.Form("username") &"'"

dbCon.Execute(mySQL)
dbCon.Close
SET dbCon = Nothing
%>

זה נותן לי שגיעה כזאת - ‏‏משפט SQL לא חוקי; דרושים הערכים 'DELETE'‏, 'INSERT', ‏'PROCEDURE'‏, 'SELECT' או 'UPDATE'.

עזרה :s05:

פורסם

תדפיס את המחרוזת mySQL במקום לעשות לה Execute ותראה מה הבעיה.

(רמז - בשורה השנייה והשלישית אתה דורך על מה שהגדרת קודם)

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

פורסם
  • מחבר

עשיתי דבר כזה

mySQL = "UPDATE accounts SET UserName='"& Request.Form("username") &"', pass='"& Request.Form("pas1") &"', Email='"& Request.Form("mail1") &"', FirstName='"& Request.Form("firstname") &"', LastName='"& Request.Form("lastname") &"', Gender='"& Request.Form("gender") &"' WHERE UserName='"& Request.Form("username") &"';"
dbCon.Execute(mySQL)

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

פורסם

ואתה בודק שהוא באמת מצליח למצוא רשומות שמתאימות לשם המשתמש הזה?

תנסה לשלוף לפי שם המשתמש הנתון, ותראה אם אתה מקבל תוצאות.

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

פורסם
  • מחבר

ואתה בודק שהוא באמת מצליח למצוא רשומות שמתאימות לשם המשתמש הזה?

תנסה לשלוף לפי שם המשתמש הנתון, ותראה אם אתה מקבל תוצאות.

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

לא הבנתי...

הדפסתי את הרשומות שהוא מקבל כדי לראות שבאמת יש בהן משהו ויש את כל המידע...

יש אולי דברים אחרים שמשפיעים, כמו למשל אם הטופס הוא GET או POST, או שאני צריך לאפשר איפשהו עידכון או משהו דומה...?

פורסם

GET/POST קשורים רק לפרוטוקול ה-http בין הדפדפן לשרת, הם לא משפיעים בשום צורה על התקשורת בין השרת לבסיס הנתונים.

הכוונה הייתה שלצורך הבדיקה תהפוך את ה-query מ-UPDATE ל-SELECT ותראה שהוא באמת מוצא רשומה שמקיימת את תנאי ה-WHERE ומחזיר נתונים נכונים.

פורסם
  • מחבר

כבר יש את זה בדף קודם...

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

וזה עובד בסדר גמור, זה אומר שהוא מוצא את המשתמש המסוים בטבלה ואת השדות שלו...

מה זה יכול להיות ?

פורסם

GET/POST קשורים רק לפרוטוקול ה-http בין הדפדפן לשרת, הם לא משפיעים בשום צורה על התקשורת בין השרת לבסיס הנתונים.

לא משפיעים אבל פה הוא רושם request.form זה אומר שהוא צריך לוודא שהוא שולח את הנתונים בשיטת POST ולא GET מהטופס שמעביר את הנתונים לקובץ הזה.

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

dbCon.open "Provider=Microsoft.JET.OLEDB.4.0;Data source=" & Server.mappath("../Data/DataBase.mdb"), 3

אם כל הדברים שרשמתי פה לא פתרו לך את הבעיה תחזור לכאן ודווח איפה אתה עומד.

פורסם
  • מחבר

הסתדרתי כבר...

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים