בעיה בקוד ASP

raychin

New member
בעיה בקוד ASP

שלום רציתי לדעת מה הבעיה בקוד הבא שהמחשב נותן לי את הודעת השגיאה
<% If Request.Form("toDel")<>"" Then Dim con, slg Set con = Server.CreateObject("ADODB.Connection") con.Open "DATA" slg="DELETE FROM People WHERE ID IN (" & Request.Form("toDel") & ")" con.Execute slg con.Close Set conn=Nothing End If Response.Redirect "list.asp" %>​
הודעת השגיאה
Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] Could not delete from specified tables. /delete/delete.asp, line 8 Browser Type: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Page: POST 17 bytes to /delete/delete.asp POST Data: toDel=245&toDel=8 Time: ‏יום שלישי ‏11 ‏דצמבר ‏2007, 15:07:12 שורה 8 con.Execute slg​
 

זהר פלד

New member
על פניו הקוד נראה די תקין...

מה זה "data"? זה שם של DSN? אם כן, בדוק האם ה DSN מוגדר כמו שצריך. תנסה להדפיס את ה sql למסך, בלי execute, ולהריץ אותו ישירות מול מסד הנתונים, תראה אם המחיקה מתבצעת. שים לב שיש לך פרצת אבטחה חמורה - אתה מעביר ישירות ערכים מה request.form אל תוך ה SQL. אתה חושף את עצמך להתקפת sql injection חמורה ופשוטה - בלי מאמץ בכלל אפשר למחוק לך את כל המידע מהטבלה הזו.
 

raychin

New member
הDSN מוגדר כמו שצריך

בשמירת נתונים זה עובד כמו שצריך הDATA זה השם של הDSN לקחתי את הקוד מאתר וובמסטר וערכתי אותו כך שיתאים לאתר שלי ניסיתי להוריד את ה execute, ועדין זה אומר שיש שגיאה באותה שורה תודה
 

netc

New member
לא יודע אם זה קשור

אבל בשורת המחיקה, מה אתה רוצה שהוא ימחק? אתה נותן לו delete, אבל בלי ערכים למחוק. תנסה להוסיף * אחרי ה delete.
 

זהר פלד

New member
ממש לא.

אי אפשר לעשות Delete על חלק מהרשומה, ולכן גם אין שום צורך (ובבסיסי נתונים מסויימים גם תקבל שגיאה על זה) לציין * או רשימת שדות במשפט DELETE.
 
למעלה