यह वही है जो हम एक समान काम करने के लिए उपयोग करते हैं (एक ऐसी तालिका में सम्मिलित करना जिस पर हमारा कोई नियंत्रण नहीं है, और जिसका कोई एपीआई एक्सेस नहीं है)
DESCRIBE क्वेरी का उपयोग सुनिश्चित करता है कि केवल मौजूद कॉलम ही डाले गए हैं।
$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) . ')';
संपादित करें:डीबी() एमडीबी 2 के आसपास हमारा रैपर है।
और निश्चित रूप से यह उन्हें पूरी पंक्ति भरने की अनुमति देता है। यदि आपके पास प्रतिबंधित कॉलम हैं (ऑटो-इन्क्रीमेंट आईडी और ऐसे), तो आपको उन्हें फॉर्म डेटा से फ़िल्टर करना होगा...