2017-04-14 8 views
1

任意の数の引数/パラメータを取ることができるメソッドを作成しようとしています。最初の唯一の必須パラメーターには、データベース照会の値が入っています。渡された追加の引数は、テーブル内の列と一致します。 foreachループ内で引数を使用して、引数として渡されたクエリ名と列名を使用してデータベースからデータを取得する必要があります。私はPHPの機能でfunc_get_args()ビルドを使用し、このために...ここでforeachメソッド内のPDO DBクエリの結果を空にします

は、あなたが簡単に、単純にメソッドを呼び出すことにより、データベースを照会できるように、クラス内のメソッドのアイデアがある例

class Crud{ 
    public $results; 

function selectAllJobs(){ 
     $sql="SELECT * from jobs"; 
     $stmnt = $db->prepare($sql); 
     $stmnt->execute(); 
     return $stmnt->fetchAll(); 
    } 

function displayResults($results){ 
     $this->results = $results; 
     $numargs = func_num_args(); 
     echo "Number of arguments: $numargs \n"; 

     $arg_list = func_get_args(); 

     foreach ($results as $index=> $result) { 
      echo $currentParam = $arg_list[$index]; 
      echo $result[$currentParam]; 
      echo'<br />'; 
     } 

$obj = new Crud(); 
$results = $obj->selectAllJobs(); 
$obj->displayResults($results, 'location', 'description', 'headline'); 

ですそして、簡単にクエリの結果を表示するだけで、displayResults()という希望の方法を呼び出すことができます....任意のヘルプ/アドバイスをいただければ幸いです。あなたが最初のインデックスは、あなたが望むもの'location'ではないのでdisplayResults()$resultsの代わりに、3つのパラメータを含め、これはあなたのforeachループを破る引数として4つのパラメータに渡す

TABLE

enter image description here

+0

あなたの質問/問題は何ですか? – kunruh

+0

@kunruh 'displayResults()'を実行しているときにIMが定義されずに文字列オフセットエラーが発生する 'selectAll()'メソッドはDBクエリを実行する必要があります。配列が返され、その配列は 'displayResult()'に渡されなければなりません。配列は結果を表示する上でループされます。 –

答えて

1

$resultsです。 print_r($arg_list)であなた自身を見ることができます。

selectAllJobs()に返信し、displayResults()に再度渡す必要はありません。結果はクラス内(およびプライベート)に$this-resultsに割り当てることで保持できます。

foreachループが1つあります.1つは$this-resultsをループし、もう1つは$arg_listをループするループです。コードは以下のとおりです:

関連する問題