我只是在学习PHP,而我正试图弄清楚如何将数据库查询存储在单独的文件中,作为类,方法或简单变量的一部分。
例如:我有一个如下所示的查询:
$checkuser = mysql_query("SELECT UserName, Email FROM users
WHERE UserName = '$username4db' OR EMAIL = '$email4db'")
or die($checkuser_error);
我不想将其内嵌到文件中,而是将其移到中心位置,然后从那里使用它们。
我尝试使用包含文件并简单地调用变量,但它不起作用。
答案 0 :(得分:1)
将查询存储在中心位置几乎没有意义IMO,因为它们将始终是程序逻辑的一部分,并且当您处理程序的流程时,您将需要查看它们(并更改它们)。
您可以将包含占位符的查询放在一起,然后使用sprintf()
填写,但我真的不明白这一点。
答案 1 :(得分:1)
你应该看看MVC设计模式,整个目的是提供一种基于功能组织代码的简洁方法。
模型是数据库交互代码所在的位置。根据MVC实现,这有时是数据库表的直接表示,或者它可能是您自己编写的函数集合,用于处理手头的问题。
视图用于显示代码。作为一般规则,在编写视图时,只有HTML和基本PHP(回显变量,构建表的foreach循环)应该放在视图中。
控制器是程序逻辑的放置位置。从控制器中调用模型来进行构建数据所需的数据处理,然后将数据传递到视图中。
这是一个非常基本的解释,维基百科总是对这个主题有更多的评论:http://en.wikipedia.org/wiki/Model-view-controller。
PHP中有许多MVC框架,您可以使用它们来构建网站。我使用并推荐CodeIgniter,因为它非常易于使用,并且在实现方面非常灵活。
答案 2 :(得分:0)
您可以将查询作为字符串存储在单独的文件中,然后在要使用查询时调用这些字符串变量。但是,我猜你的大多数查询都需要参数 - 在这种情况下你需要创建一系列函数(有或没有类)来用适当的变量构建查询。
答案 3 :(得分:0)
我发现“一个查询文件”范例非常有趣。我认为将查询保留在您想要获取数据的位置更有意义,因为这是您希望找到它的地方。相反,其他事情是将所有查询放在一个中心位置是个好主意,即使它达到5000行也可以随时返回。我不能说有正确的答案。
您可以为每个查询分配一个函数。只需要一个文件,其中包含您希望在函数中定义的所有查询。因此,当您想要从包含的文件中获取某些特定查询时,您只需运行get_random_data_query_uno()或者您拥有的内容。
答案 4 :(得分:0)
你的问题既有意义也有废话 您可以使用一些ORM将查询封装到某个类中。这是有道理的 但是存储原始查询是没有意义的。特别是你发布的表格。无论您是否需要此特定数据,所有查询都将无条件运行 至少将其封装在函数调用中
function checkuser($username4db, $email4db) {
$sql = "SELECT UserName, Email FROM users WHERE UserName = %s OR EMAIL = %s";
return db::getrow($sql, $username4db, $email4db);
}
但我仍然认为将所有网站查询存储在一个文件中没有任何意义。为什么不根据此查询所属的站点部分以逻辑方式存储它?