SQL查询在PHP文件中过度使用?

时间:2011-08-20 01:17:23

标签: php sql

我有SQL查询到结果表:

$php_variable_answer = "SELECT 
                        answer_id 
                        FROM result 
                        WHERE question_id = $php_variable_question";

比查询转到答案表并得到答案:

$php_variable_answer = "SELECT answer 
                        FROM answer_table
                        WHERE answer_id = $php_variable_answer";

我的网站上有20个php文件。我每次都使用这三个查询来获得至少5或8个文件的答案。

我的问题:

  • 如何通过在一个地方调用它们来在所有文件中重用此代码?如果有可能吗?
  • 其次,使用一个占位符重用此代码是否合适?这有什么不同吗?

3 个答案:

答案 0 :(得分:3)

简短的回答是,重复使用代码是一个好主意,您可以越有效地重复使用更好的东西。 (更容易进行更新,保持一致等)如果您重复使用相同的查询或相同的PHP,请将可重用的部分移动到适当命名的文件,如database.php。然后,将此行添加到任何需要查询功能的文件的顶部:

require_once('database.php');

这将使您现有的函数和查询可用,因此您不必在每个新的PHP文件中重写它们。

如果您的PHP文件开始增长,您可能希望开始研究使用框架来保持组织有效性的好处。框架是您可以使用的代码库,它将鼓励您保持井井有条并为您提供一些现有代码。我喜欢使用的PHP框架是CodeIgniter,还有许多其他可用的框架。

答案 1 :(得分:0)

最好把它放到一个函数中(然后在你需要的地方包含那个函数)

你的SQL也很容易不需要2个查询..

SELECT at.answer FROM result AS r 
LEFT JOIN answer AS at ON (at.answer_id = r.answer_id)
WHERE r.question_id = $php_variable_question

如果您事先知道question_id,可以执行类似

的操作
SELECT at.answer FROM result AS r 
LEFT JOIN answer AS at ON (at.answer_id = r.answer_id)
WHERE r.question_id IN (1,2,3);

答案 2 :(得分:-1)

为了简单起见,您可以随时创建一个帮助文件,其中包含您用于这些查询的函数。示例:

<?php 
/* qa_helper.php */

function get_question($q_id){
  // connect to db...
  return mysql_result(mysql_query('SELECT answer_id from result where question_id = ' . $q_id),0);
}

function get_answer($a_id){
  // connect to db...
  return mysql_result(mysql_query('SELECT answer from answer_table where answer_id = ' . $a_id),0);
}

然后在您的文件中,您只需引用它:

<?php
include_once('qa_helper.php');

$answer = get_answer(123);
}

这是旧式程序PHP的方式。我建议您查看Object-oriented MVC框架来整理代码。像CodeIgniter这样简单。