2013-02-08 3 views
0

Вот SQL заявление:SQL запрос не вставляя правильные значения в базу данных

SQL = "INSERT INTO MYIMAGES(image_blob, filename, description, filesize, accountnum, rmanum, billol, copiedfilename) VALUES(?, '" 
SQL = SQL & File.Filename & "', '" 
SQL = SQL & Replace(Upload.Form("DESCR"), "'", "''") & "', '" 
SQL = SQL & File.Size & "', '" 
SQL = SQL & Replace(Upload.Form("accountnum"), "'", "''") & "', '" 
SQL = SQL & Replace(Upload.Form("rmanum"), "'", "''") & "', '" 
SQL = SQL & Replace(Upload.Form("billol"), "'", "''") & "', " 
SQL = SQL & Replace(Upload.Form("accountnum"), "'", "''") & "-" & Replace(Upload.Form("rmanum"), "'", "''") & ")" 

AccountNum = 3456345 rmanum = 345234

значение в базе данных, которая получает введенные 3111111 то, что я хочу, чтобы это было is 3456345-345234

Тип данных столбца: varchar(255) - Что я делаю неправильно?

+3

[SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection), кто-нибудь? – Oded

+0

Если вы выдаете переменную sql, как она выглядит? Кроме того, о какой области вы говорите? –

+0

Извините, это последнее, поле copiedfilename – user7954

ответ

3

Если вы используете SQL параметры, которые вы можете избежать REPLACE, а также любой SQL инъекции

Ex:

Изменить SQL заявление

INSERT INTO MYIMAGES(image_blob, filename, description, filesize, 
    accountnum, rmanum, billol, copiedfilename) 
VALUES(@p1, @p2, @p3,@p4,@p5, @p6, @p7,@p8) 

Затем сделайте

cmd.Parameters.AddWithValue("@p2",File.Filename) 
cmd.Parameters.AddWithValue("@p3",Upload.Form("DESCR")) 

....

//this will insert correct data 
cmd.Parameters.AddWithValue("@p8",Upload.Form("accountnum") & "-" & 
            Upload.Form("rmanum")) 

Обновлено на основе OP комментарий: Для ASP попробовать это

dim cmd, rs, param1, param2, param3, param4, param5,param6, param7, param8 
set cmd = server.CreateObject("adodb.command") 
strCmd = "INSERT INTO MYIMAGES(image_blob, filename, description, 
      filesize, accountnum, rmanum, billol, copiedfilename) 
      VALUES(?,?,?,?,?,?,?,?)" 
Set cmd.ActiveConnection = objConn 
cmd.CommandText = strCmd 
cmd.CommandType = adCmdText 
Set param1 = cmd.CreateParameter ("image_blob", adWChar, adParamInput, 50) 
param1.value = image_blob 
cmd.Parameters.Append param1 
.... 
Set param8 = cmd.CreateParameter ("copiedfilename", adWChar, adParamInput, 50) 
param8.value = Upload.Form("accountnum") & "-" & Upload.Form("rmanum") 
cmd.Parameters.Append param8 
Set rs = cmd.Execute() 
+0

Удивительно, я пойду с этим. Спасибо всем – user7954

+0

Не забудьте отметить это как ответ. –

+0

Это говорит, что Object required: 'cmd', когда я пытаюсь отправить форму. Мне нужно сначала создать объект команды? Это классический ASP-файл btw – user7954

0

попробовать это:

SQL = "INSERT INTO MYIMAGES(image_blob, filename, description, filesize, accountnum, rmanum, billol, copiedfilename) VALUES(?, '" 
SQL = SQL & File.Filename & "', '" 
SQL = SQL & Replace(Upload.Form("DESCR"), "'", "''") & "', '" 
SQL = SQL & File.Size & "', '" 
SQL = SQL & Replace(Upload.Form("accountnum"), "'", "''") & "', '" 
SQL = SQL & Replace(Upload.Form("rmanum"), "'", "''") & "', '" 
SQL = SQL & Replace(Upload.Form("billol"), "'", "''") & "', '" 
SQL = SQL & Replace(Upload.Form("accountnum"), "'", "''") & "-" & Replace(Upload.Form("rmanum"), "'", "''") & "')" 

Я просто положить "в begginning и в конце последнего значения, так что это не будет интерпретироваться как математическое выражение

, который:

3456345-345234 = 3111111