只是想从安全的角度来看,将我的 SQL 语句存储在像我的"file"文件夹这样的单独文件夹中并在我需要时调用它们是否好?还是这太麻烦了?
我在想也许可以将所有语句存储在一个文件中,但我希望能对此提供意见。
我的意思的一个例子。
require('files\selectriskrating.php');
在文件文件夹中我有一个 selectdetails.php
$query="SELECT `Riskrating` FROM `currentdetails` WHERE 1";
这是绝对安全的*。正如另一位评论者指出的那样,您不需要将其保存在您的网络根目录之外,因为服务器会将其评估为 php,并且永远不会将其回显给浏览器。
但是,这是一种非常麻烦的管理 SQL 的方法。您依赖于您的 include 始终没有错误,因为它总是使用正确的 SQL 语句分配 $query 的(大概)全局变量。您还在 SQL 本身周围添加了一个非常困惑的层,这将使其他人(甚至您将来)难以尝试阅读您的代码。
一种改进方法是将语句保存为文本文件。如果您想要实现的是关注点分离,那么只需将语句保存为文本文件,这样
SELECT `Riskrating` FROM `currentdetails` WHERE 1;
位于 files/myquery.sql 中。然后加载它
$query = file_get_contents('files/myquery.sql');
这样,您就可以消除一个潜在的错误来源,并且可以自动循环遍历所有查询并检查它们的正确性(例如,在单元测试中)。请注意,如果您这样做,您必须将查询保留在文档根目录之外,因为它们可以显示在浏览器中。
但是,更好的方法是使用 ORM,例如 RedBean或 Doctrine .这样一来,您根本不必在数据库层上乱搞。
* 假设文件内容实际上是:
<?php $query = "sql statement";