Đây là những gì chúng tôi sử dụng để làm một việc tương tự (chèn vào bảng mà chúng tôi không có quyền kiểm soát và không có quyền truy cập API)
Sử dụng truy vấn DESCRIBE đảm bảo chỉ các cột tồn tại mới được chèn.
$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) . ')';
chỉnh sửa:DB () là trình bao bọc của chúng tôi xung quanh MDB2.
Và tất nhiên điều này cho phép họ điền vào toàn bộ hàng. Nếu bạn có các cột bị hạn chế (id tăng tự động, v.v.), bạn sẽ phải lọc những cột đó ra khỏi dữ liệu biểu mẫu ...