gpt4 book ai didi

apache-flex - SQLite 参数 - 不允许将表名作为参数

转载 作者:IT王子 更新时间:2023-10-29 06:19:22 27 4
gpt4 key购买 nike

我正在通过 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com