2011-08-20 92 views
1

我有SQL查詢都到結果表:在PHP文件中濫用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

簡短的回答是重複使用代碼是一個好主意,你越能有效地重用東西越好。 (更輕鬆地進行更新,保持一致等)如果您要重複使用相同的查詢或相同的PHP,請將可重用部分移至名稱相應的文件,如database.php。然後,該行添加到任何文件的頂部,需要你的查詢功能:

require_once('database.php');

這會讓你的現有功能和查詢,所以你不必他們在每一個新的重新寫PHP文件。

如果您的PHP文件開始增長,您可能需要開始研究使用框架保持組織和高效的好處。框架是一個可以使用的代碼庫,它會鼓勵你保持組織並給你一些現有的代碼來構建。我喜歡使用的PHP框架是CodeIgniter,還有其他許多可用的框架。

+0

+1。我剛開始試驗[Symfony](http://symfony.com) - 直到現在我總是使用CodeIgniter –

-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-orientedMVC框架來組織你的代碼。簡單的像CodeIgniter

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);