作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在通过 Flex 在 AIR 中开发一个应用程序,但我没有发现 SQLite 哪里出了问题(我习惯了 MySQL)。参数有效,但仅在某些情况下有效。这是针对sql注入(inject)的内置卫生系统的一部分吗?感谢您的帮助!
作品:
sqlite
“INSERT :Fields FROM Category”,其中参数为:Fields = "*"
as3
var statement:SQLStatement = new SQLStatement();
statement.connection = connection;
statement.text = "INSERT :Fields FROM Category";
statement.parameters[":Fields"] = "*";
statement.execute;
不起作用(“:Table”处的 SQL 语法错误):
sqlite
“INSERT :Fields FROM :Table”,其中参数为:Fields = "*"和 :Table = "Category"
as3
var statement:SQLStatement = new SQLStatement();
statement.connection = connection;
statement.text = "INSERT :Fields FROM :Table";
statement.parameters[":Fields"] = "*";
statement.parameters[":Table"] = "Category";
statement.execute;
最佳答案
通常不能将 SQL 参数/占位符用于数据库标识符(表、列、 View 、模式等)或数据库函数(例如,CURRENT_DATE
),但是而仅用于绑定(bind)文字值。
通过服务器端对参数化(又名准备好的)语句的支持,数据库引擎解析您的查询一次,记住您将绑定(bind)的任何参数的特性——它们的类型、最大长度、精度等。已解析查询的后续执行。但是,如果关键位(如数据库对象)未知,则无法将查询正确解析为其句法元素。
因此,通常必须自己替换表名,在存储过程中或在动态连接/插入/任何正确执行 SQL 语句的客户端代码中。在任何情况下,请记住使用您的 SQL API 函数来引用数据库标识符,因为 API 不会为您做这件事。
关于apache-flex - SQLite 参数 - 不允许将表名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274432/
我是一名优秀的程序员,十分优秀!