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

Php 存储在单独文件夹中的SQL语句,php,mysql,security,Php,Mysql,Security,我只是想从安全的角度考虑,把我的SQL语句存储在一个单独的文件夹中,比如我的“文件”文件夹中,并在需要时调用它们,这样好吗?还是这太麻烦了 我在想也许可以将所有的语句存储在一个文件中,但我希望您能提供这方面的信息 我的意思的一个例子 require('files\selectriskrating.php'); 在files文件夹中,我有一个selectdetails.php $query="SELECT `Riskrating` FROM `currentdetails` WHERE 1";

我只是想从安全的角度考虑,把我的SQL语句存储在一个单独的文件夹中,比如我的“文件”文件夹中,并在需要时调用它们,这样好吗?还是这太麻烦了

我在想也许可以将所有的语句存储在一个文件中,但我希望您能提供这方面的信息

我的意思的一个例子

require('files\selectriskrating.php'); 
在files文件夹中,我有一个selectdetails.php

$query="SELECT `Riskrating` FROM `currentdetails` WHERE 1";

这是非常安全的*。您不需要像另一位评论者所说的那样将其保留在web根目录之外,因为服务器会将其评估为php,而不会将其回显到浏览器

但是,这是一种非常麻烦的管理SQL的方法。您依赖于include始终是无错误的,因为它总是用正确的SQL语句分配(可能是)全局变量$query。您还在SQL本身周围添加了一个非常混乱的层,这将使其他人很难尝试阅读您的代码(甚至将来您自己也很难)

一个改进是将语句保存为文本文件。如果您试图分离关注点,那么只将语句保存为文本文件,例如

SELECT `Riskrating` FROM `currentdetails` WHERE 1;
位于文件/myquery.sql中。然后装上

$query = file_get_contents('files/myquery.sql');
这样,您就消除了一个潜在的错误源,并且可以自动循环所有查询并检查它们的正确性(例如,在单元测试中)。请注意,如果执行此操作,则必须将查询保留在文档根目录之外,因为它们可以显示在浏览器中

然而,更好的方法是使用ORM,例如or。这样,您根本就不必乱弄数据库层

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

<?php $query = "sql statement";

将它们放在
public\u html
域之外。为什么不将它们存储在数据库中?嗯,是的,我可以试试这个,你对我目前正在做的事情有什么看法?你是在问Alex K.还是我自己@频闪-在对某个人做出特别的回应时,一定要使用
@
符号,后跟该人的姓名,这样该人就会收到通知。我们无法继续检查此线程以查看“谁对谁说了什么”;-)@AlexK-你对我目前正在做的事情有什么看法?每个查询都有单独的文本文件?很高兴我不必维护这样的代码@戴夫,我也不会那样做,但那已经是他正在做的事了。。。只在其中嵌入代码。“这就是为什么我称之为笨重的原因。”马特非常感谢你的深入回答。我很感激。我会考虑你所说的ORM。我不一定要使用includes,只是想看看人们有什么意见,以及是否有其他选择:)