2010-02-24 1 views

답변

4

이것은 우리가 비슷한 일을 수행하는 데 사용하는 무엇인가가 조회를 설명 사용

(우리가 제어 할 수없는 테이블에 삽입을, 어떤 API에 액세스 할 수 없습니다) 삽입 존재 열만을 보장합니다.

$db = new DB(); 
$sql = 'DESCRIBE `table`'; 
$result = $db->query($sql); 
$row = array(); 
$query = array(); 

while ($row = $result->fetchRow()) 
{ 
    if (array_key_exists($row['field'], $form_data)) 
     if (is_null($form_data[$row['field']])) 
      $query[$row['field']] = 'NULL'; 
     else 
      $query[$row['field']] = $db->quote($form_data[$row['field']]); 
} 

$keys = array_keys($query); 

foreach ($keys as &$key) 
    $key = $db->quoteIdentifier($key); 

unset($key); 

$vals = array_values($query); 

$sql = 'INSERT INTO `table` ' 
    . '(' . implode(', ', $keys) . ') ' 
    . 'VALUES(' . implode(', ', $vals) . ')'; 

편집 : DB()는 MDB2를 둘러싼 래퍼입니다.

물론 전체 행을 채울 수 있습니다. 제한된 열 (자동 증가 ID 등)이있는 경우 양식 데이터에서 필터링해야합니다 ...

+1

물론 "필수적으로 자동으로 SQL을 생성하지 않는 것이 좋습니다." – jasonbar