פורסם 2007 ביוני 218 שנים <% if session("iao")="no" Then response.redirect("admin.html") end if%><HTML><HEAD> <TITLE>עדכון</TITLE></HEAD><BODY><% '======= שליפת נתוני המשתמש מהטופס ======= username = Request.Form("username") password = Request.Form("password") firstname = Request.Form("firstname") lestname = Request.Form("lestname") sex = Request.Form("sex") age = Request.Form("age") street = Request.Form("street") homenumber = Request.Form("homenumber") city = Request.Form("city") more = Request.Form("more") '======= חיבור למסד הנתונים ופתיחתו ======= Set con = Server.CreateObject("ADODB.connection") con.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/members.mdb")) '=========== בדיקה האם כבר קיימת רשומת משמתמש בטבלה ========== sqlSelectCmd = "SELECT * FROM users WHERE username='" & username & "'" Set rec = con.Execute(sqlSelectCmd) If (rec.EOF = True) Then '======= החזרת תשובה ללקוח שפעולת העדכון לא בוצעה כי לא קיים משתמש כזה ======= Response.Write("<html><body dir='rtl'><h1><center>משתמש לא קיים בטבלה!</center></h1></body></html>") Else '======= בניית הפקודה לעדכון נתוני המשתמש בטבלה ======= sqlCmd = "UPDATE users SET firstname='" & firstname & "',lestname='" & lestname & "',age='" & age & "',sex='" & sex sqlCmd = sqlCmd & "',password='" & password & "',street='" & street & "',homenumber='" & homenumber& "',city='" & city sqlCmd = sqlCmd & "',more='" & more & "' WHERE username='" & username & "'" '======= עדכון רשומת המשתמש בנתונים ======= con.Execute(sqlCmd) 'Response.Write(sqlCmd) '======= החזרת תשובה ללקוח שפעולת העדכון בוצעה בהצלחה ======= Response.Write("<html><body dir='rtl'><h1><center>נתוני המשתמש עודכנו בהצלחה!</center></h1></body></html>") End If '======= סגירת מסד הנתונים ======= rec.Close() con.Close() %></BODY></HTML>השורה הבעעיתית : con.Execute(sqlCmd) כאשר אני מריץ את הקוד הנ"ל אז עולה לי שגיאה בשורה המודגשת...מה הבעיה בשורה המודגשת וכיצד פותרים אותה ?
פורסם 2007 ביוני 218 שנים מחבר הוא רושם לי שהשורה לא תקינה ואני לא הבנתי למה...?אתה רוצה את הנוסח המדויק שהוא נותן?
פורסם 2007 ביוני 218 שנים מחבר השגיאה המוצגת :סוג שגיאה:Microsoft JET Database Engine (0x80040E14)שגיאת תחביר במשפט UPDATE./mySite/update.asp, line 44מה השגיאה אומרת וכיצד אני פותר אותה..?נ.ב : השורה המבוקשת זה השורה שרשמתי בהודעה הנ"ל מתוך הקוד הנ"ל.....
פורסם 2007 ביוני 218 שנים על פניו השאילתא נראת נכונה.אולי זה משהו אחר שקשור למנוע שאתה משתמש בו להתקשרות עם מסד הנתונים.תנסה לשים את המילה table בין המילה update לשם הטבלה שלך.אם זה לא עוזר תבדוק אולי אתה מנסה להכניס מחרוזת לשדה שהוא בכלל integer.
פורסם 2007 ביוני 218 שנים מחבר על פניו השאילתא נראת נכונה.אולי זה משהו אחר שקשור למנוע שאתה משתמש בו להתקשרות עם מסד הנתונים.1.תנסה לשים את המילה table בין המילה update לשם הטבלה שלך.2.אם זה לא עוזר תבדוק אולי אתה מנסה להכניס מחרוזת לשדה שהוא בכלל integer.איך אני בודק את סוג המחרוזת / המשתנה ?למה אתה מתכוון ב-1 ?
פורסם 2007 ביוני 218 שנים 1. ...UPDATE table users 2. במסד נתונים שלך.אם אתה משתמש ב mdb של אקסס תפתח את הטבלה במצב עיצוב ושם אתה יכל לראות את סוגי השדות.אם השדה מחרוזת (String) אתה מכניס אליו נתונים עם גרש בכל צד, אם הוא מספר (Integer וחבריו) אתה מכניס אותו נקי ללא גרש.
פורסם 2007 ביוני 218 שנים מחבר כן הסוג במסד הנתונים הוא טקסט כלומר STRING....אבל זה בכל זאת לא עובד ..מה עושים כדי לתקן את זה...?
פורסם 2007 ביוני 218 שנים תנסה להשתמש בחיבור הזה (תחליף את השמות והמסלולים בהתאם לתוכנית שלך):SET objConn = Server.CreateObject("ADODB.Connection")strDbPathAndName =server.MapPath("\") & "\db.mdb"strConn = "DBQ="+strDbPathAndName+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=80;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
פורסם 2007 ביוני 218 שנים מחבר זה מה שעשיתי..תבדוק שום את הקוד שלי בחלק כמו שאתה רשמת ואם זה לא תקין תכתוב לי בבקשה כך שזה יהיה תקין.....?
פורסם 2007 ביוני 218 שנים משפט ה- update שלך פגיע להתקפות משתמשים מתוחכמים למשל אם משתמש יזין בטופס שלך טקסט עם גרש הוא יפיל את הדף ויוכל לראות את הקוד שלךיכול להיות שה- update עובד לפעמים ולא יעבוד במקרים מסויימיםיכול להיות שאתה כרגע רץ על מקרה שבו פרטי המשתמש שאתה מנסה לעדכן מכילים תווים שמורים כמו גרשואז כל משפט ה- update שלך משתבשלפני פקודת ה- execute תכניס response.write של משפט ה- update כפי ש- access מנסה לפענח
פורסם 2007 ביוני 218 שנים מחבר רשמתי אחרי זה את הפקודה וכשאחלפתי בינהם זה הציג לי את כל הנתונים אך שניסיתי לעדכן את מסד הנתונים הוא העלה לי את השגיאה....האם לזה התכוונת ?אם לא למה התכוונת וכיצד אני יעשה זאת ?
פורסם 2007 ביוני 218 שנים את פקודת ה- Execute שים ב- הערה כלומר לא לביצועלפניה שים את משפט ה- write של משפט ה- updateחשוב שתריץ בדיוק על אותו מקרה שבו היתה השגיאה, כמו שאמרתי קודם יכול להיות שהשגיאה תופיע רק במקרים מסויימים.שום עדכון לא אמור להתבצע וגם לא שגיאה, אתה אמור רק לראות את משפט ה- update הסופי כפי שאתה שולח ל- accessResponse.Write(sqlCmd)'con.Execute(sqlCmd)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.