הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שגיאות SQL (https://hosts.co.il/forums/showthread.php?t=62716)

דור 04-05-08 16:06

שגיאות SQL
 
שלום

אני יודע שאני פותח די הרבה אשכולות בתיכנות, זה רק כי אני די חדש ויש לי שגיאות שאני לומד מהן
אשמח אם תתקנו לי את המשפט SQL הבאים:

1.
קוד:

<%
        session ("e")=Request.Form("email")
        session ("p")=Request.Form("Password")
        session ("n")=Request.Form("number")
        session ("k")=Request.Form("kidomet")
        path=Server.mappath("db.mdb")
       
        set con= Server.createobject("ADODB.Connection")
     
        con.mode=3 
          con.open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" &path

        sq2="select * from o4users where email="&session ("e")&" and Password="&session ("p")&" and number="&session ("n")&" and kidomet="&session ("k")&""

        set R=con.execute(sq2)
        if R.eof then
                response.write "פרטים לא נכונים"
        else
            sq="delete * from o4users where email="&session ("e")&" and Password="&session ("p")&" and number="&session ("n")&" and kidomet="&session ("k")&""
        con.execute sq
%>
מחקת בהצלחה את המשתמש
<%
end if
%>

השגיאה:
ציטוט:

Microsoft JET Database Engine (0x80040E14)
‏‏‎‏‏שגיאת תחביר (אופרטור חסר) בביטוי השאילתה 'email=dor_1812@hotmail.com and Password=123456 and number=5312324 and kidomet=052'.
/idan/del2.asp, line 15
2.
קוד:

<%

        i=Request.Form("id")
        fname=Request.Form("firstname")
        sname=Request.Form("familyname")
        n=Request.Form("number")
        e=Request.Form("email")
        z=Request.Form("ezor")
        a=Request.Form("adress")
        yn=Request.Form("yesno")
        o=Request.Form("offers")
        c=Request.Form("comment")
        k=Request.Form("kidomet")
        town=Request.Form("city")
        sq="UPDATE `o4users` SET `firstname`='"&fname&"',`familyname`='"&sname&"',`number`='"&n&"',`email`='"&e&"',`ezor`='"&z&"',`adress`='"&a&"',`yesno`='"&yn&"',`comment`='"&c&"',`offers`='"&o&"',`kidomet`='"&k&"'  WHERE `id`="&i&""
        response.write sq
        path=Server.mappath("db.mdb")
       
        set con= Server.createobject("ADODB.Connection")
     
        con.mode=3 
          con.open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" &path
   
       
        con.Execute sq

%>


הנתונים עודכנו בהצלחה

השגיאה:
ציטוט:

סוג שגיאה:
Microsoft JET Database Engine (0x80040E14)
‏‏‎‏‏שגיאת תחביר (אופרטור חסר) בביטוי השאילתה '`id`='.
/idan/update.asp, line 25

תודה רבה רבה!

DavidBD 04-05-08 16:35

1.
קוד:

<&#37;
        session ("e")=Request.Form("email")
        session ("p")=Request.Form("Password")
        session ("n")=Request.Form("number")
        session ("k")=Request.Form("kidomet")
        path=Server.mappath("db.mdb")
       
        set con= Server.createobject("ADODB.Connection")
     
        con.mode=3 
          con.open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" &path

        sq2="select * from o4users where [email]="&session ("e")&" and [Password]="&session ("p")&" and [number]="&session ("n")&" and [kidomet]="&session ("k")&""

        set R=con.execute(sq2)
        if R.eof then
                response.write "פרטים לא נכונים"
        else
            sq="delete * from o4users where [email]="&session ("e")&" and [Password]="&session ("p")&" and [number]="&session ("n")&" and [kidomet]="&session ("k")&""
        con.execute sq
%>
מחקת בהצלחה את המשתמש
<%
end if
%>

תעטוף תמיד שמות של שדות ב [ ] (בPHP ב `) ע"מ להמנע ממילים שמורות של SQL.

2.
קוד:

<%

        i=Request.Form("id")
        fname=Request.Form("firstname")
        sname=Request.Form("familyname")
        n=Request.Form("number")
        e=Request.Form("email")
        z=Request.Form("ezor")
        a=Request.Form("adress")
        yn=Request.Form("yesno")
        o=Request.Form("offers")
        c=Request.Form("comment")
        k=Request.Form("kidomet")
        town=Request.Form("city")
        sq="UPDATE o4users SET [firstname]='"&fname&"', [familyname]='"&sname&"',[number]='"&n&"',[email]='"&e&"',[ezor]='"&z&"',[adress]='"&a&"',[yesno]='"&yn&"',[comment]='"&c&"',[offers]='"&o&"',[kidomet]='"&k&"'  WHERE [id]=" & i
        response.write sq
        path=Server.mappath("db.mdb")
       
        set con= Server.createobject("ADODB.Connection")
     
        con.mode=3 
          con.open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" &path
   
       
        con.Execute sq

%>

עטפת את התאים בהגנה מפני "מילים שמורות של SQL", אבל בדרך שעושים זאת בPHP (`) ולא כמו בASP ([]), בנוסף, בASP בניגוד לPHP לא נותנים לשדות מסוג מספר ' ' או " ".

שים לב לטעויות מהסוג הזה.

בהצלחה בהמשך :)


כל הזמנים הם GMT +2. הזמן כעת הוא 08:16.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ