PHP执行用户定义的查询

时间:2012-11-05 02:51:33

标签: php mysql codeigniter

我正在使用CodeIgniter开发一个项目,其中显示的页面包含一个选项列表,其中包含页面上显示数据的可用查询(SELECT语句)。这些查询存储在MySQL表中,包括用户定义的查询。

我的问题是,处理所选查询执行的最佳方法是什么:

  1. 使用query命令从表(view_id键)获取SQL语句。替换返回的SQL语句中的参数。使用query命令执行SQL语句。

  2. 加载页面时,将SQL语句存储在一个数组中(可能很大)。当用户更改页面上的选择时,从数组中获取语句,替换语句中的参数,运行查询。

  3. 使用MySQL预编译语句。 (预见参数存在问题,因为所有视图都需要相同的参数序列)

  4. 其他选择?

  5. 我正在寻找一种既有效又安全的方法。

    谢谢

1 个答案:

答案 0 :(得分:0)

第一个 - 不要暴露任何你的SQL - 你只是在寻找麻烦。

您希望将用户输入与正在运行的实际代码分开。设置ti就像它是一个用户可能拥有的正常事物的链接列表 - 例如,个人资料,帐户设置等。

解析sql注入的输入,实际运行该查询的权限等等。

换句话说,将其设置为您站点中页面名称的简单列表 - 完全忽略他正在选择sql语句