Inilah yang kami gunakan untuk melakukan hal serupa (memasukkan ke dalam tabel yang tidak dapat kami kendalikan, dan yang tidak memiliki akses API)
Menggunakan kueri DESCRIBE memastikan hanya kolom yang ada yang dimasukkan.
$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) . ')';
edit:DB() adalah pembungkus kami di sekitar MDB2.
Dan tentu saja ini memungkinkan mereka untuk mengisi seluruh baris. Jika Anda memiliki kolom yang dibatasi (id kenaikan otomatis dan semacamnya), Anda harus memfilternya dari data formulir...