SQL语句存储在单独的文件夹中

时间:2014-01-27 15:15:31

标签: php mysql security

从安全的角度来看,只是想知道,将我的SQL语句存储在像我的“files”文件夹这样的单独文件夹中并在需要时调用它们是否合适?或者这太麻烦了?

我在考虑将所有语句存储在一个文件中,但我希望对此有所了解。

我的意思的一个例子。

require('files\selectriskrating.php'); 

在files文件夹中,我有一个带

的selectdetails.php
$query="SELECT `Riskrating` FROM `currentdetails` WHERE 1";

1 个答案:

答案 0 :(得分:1)

这是非常安全的*。您不需要像其他评论者那样将其保留在Web根目录之外,因为服务器会将其评估为php并且永远不会将其回显给浏览器。

但是,这是一种管理SQL的非常麻烦的方法。你依赖你的include总是没有错误,因为它总是用正确的SQL语句分配$ query的(可能)全局变量。您还在SQL本身周围添加了一个非常令人困惑的层,这将使其他人难以尝试读取您的代码(或者甚至将来自己)。

改进是将语句保存为文本文件。如果你想要解决的是关注点的分离,那么只需将语句保存为文本文件,例如

SELECT `Riskrating` FROM `currentdetails` WHERE 1;

位于files / myquery.sql中。然后用

加载它
$query = file_get_contents('files/myquery.sql');

这样,您就可以消除一个潜在的错误来源,并且可以自动遍历所有查询并检查它们的正确性(例如,在单元测试中)。请注意,如果您这样做,则必须将查询保留在文档根目录之外,因为它们可以在浏览器中显示。

但是,更好的方法是使用RedBeanDoctrine之类的ORM。这样,您根本不必乱用数据库层。

*假设文件内容实际上是:

<?php $query = "sql statement";