2014-10-01 1 views
-2

열 수에 관계없이 더 쉽게 모든 SQL 테이블을 읽는 함수를 만들려고합니다.하나의 일반 동적 함수를 사용하여 SQL 테이블 읽기

class control_panel { 
    public function read_table($table_name, array $col_names) { 
     global $db; 
     $i = 0; 
     $result = $db->query("SELECT * FROM $table_name"); 
     while($data = $result->fetch_object()) { 
      $i++; 
      foreach($col_names as $col_name) { 
       $cols[] = $data->$col_name; 
      } 
     } 
     var_dump($cols); 
     $nr_cols = count($cols); 
     /*for($j = 0; $j <= $nr_cols $j++) { 
      $cols[$j] = 
     }*/ 
    } 
} 
$cp = new control_panel; 
$col_names = array('ID', 'NewsTitle', 'NewsDescrption'); 
$cp->read_table('newss', $col_names); 

테이블 구조는 다음 위해서 var_dump의

전류 출력

ID NewsTitle NewsDescrption 
1 title  description 
10 sda  sd 
이다

:

:

array (size=6) 
    0 => string '1' (length=1) 
    1 => string 'title' (length=5) 
    2 => string 'descroierererer' (length=15) 
    3 => string '10' (length=2) 
    4 => string 'sda' (length=3) 
    5 => string 'sd' (length=2) 

예상 출력 I이 방법 $cp->read_table('newss', $col_names); 할 때, 테이블의 행을 반향하는

<tr> 
    <td>1</td> 
    <td>title</td> 
    <td>description</td> 
</tr> 
<tr> 
    <td>10</td> 
    <td>sda</td> 
    <td>sd</td> 
</tr> 

데이빗 죤스 (David Jones)의 대답에 따라이 코드 블록을 업데이트하십시오.

public function read_table($table_name, array $col_names) { 
    global $db; 
    $results = array(); 
    $result = $db->query("SELECT ".implode(',', $col_names)." FROM $table_name"); 
    while($data = $result->fetch_object()) { 
     $results[] = $data; 
    } 
    foreach($results as $result) { 
     // how do I ouput dinamically here 
     //echo $result->$col_name...... this would lied to another array 
    } 
} 
+0

read_table 함수의 공유 코드는 무엇입니까? – Naincy

+0

@NaincyGupta 코드에 있습니다. 첫 번째 블록. – user3467855

+0

정확히 원하는대로 출력 할 수 있도록 최종 답이 필요합니다. – user3467855

답변

1

시도해보십시오. 불필요한 처리를 제한하기 위해 전체 테이블 대신 전달하는 열만 선택해야합니다.

class control_panel { 
    public function read_table($table_name, array $col_names) { 
     global $db; 

     $results = array(); 

     $result = $db->query("SELECT ".implode(',', $col_names)." FROM $table_name"); 
     while($data = $result->fetch_object()) { 
      $results[] = $data; 
     } 

     return $results; 
    } 
} 

$cp = new control_panel; 
$col_names = array('ID', 'NewsTitle', 'NewsDescrption'); 
$results = $cp->read_table('newss', $col_names); 

$table = ''; 
foreach ($results as $item) { 
    $table .= '<tr> 
        <td>'.$item->ID.'</td> 
        <td>'.$item->NewsTitle.'</td> 
        <td>'.$item->NesDescription.'</td> 
       </tr>'; 
} 

var_dump($table); 

이렇게하면 개체 배열을 반환해야합니다. 그런 다음 루프의 각 열에 액세스하여 테이블을 표시 할 수 있습니다.

UPDATE : 당신을 반복해서는 안하고가 일반적이고 재사용 가능한 것으로 생각됩니다 같은 방법 내부에 테이블을 생성

. 대신 컨트롤러 또는 메인 PHP 파일에서 결과와 루프를 리턴하십시오.

+0

개체 배열을 가져 오지 않고도 디렉터리를 만들 수 있다고 생각했습니다. – user3467855

+0

대신 배열 배열이 필요합니까 ?? –

+0

사실 객체로는 괜찮습니다. 출력을 얻기 위해 루프하는 법을 배우려고합니다. – user3467855

관련 문제