Delphi:我的SQL查询不返回任何结果怎么了?

时间:2018-10-06 04:29:07

标签: sql database delphi

我试图通过使用以下查询保护用户输入来防止Delphi应用程序中的SQL注入:

procedure TForm1.Button1Click(Sender: TObject);
var userNameID : string;
begin
     userNameID := edit1.Text;
     with adoquery1 do
      begin
        sql.Clear;
        sql.Add('select * from users where id = :'''+userNameID+''';');
        Open;
      end;
end;

但是它没有返回任何结果。

能告诉我我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:5)

您的代码对阻止SQL注入没有任何作用,因为您仍在直接将文本连接到查询。您的SQL语法也无效。

类似的事情会起作用:

procedure TForm1.Button1Click(Sender: TObject);
begin
  AdoQuery1.SQL.Text := 'select * from users where id = :ID');
  AdoQuery1.Parameters.ParamByName('ID').AsString := edit1.Text;
  AdoQuery1.Open;
end;