sql >> Database teknologi >  >> RDS >> Mysql

oprette en dynamisk php indsættelse i mysql funktion?

Dette er, hvad vi bruger til at gøre en lignende ting (indsættelse i en tabel, vi ikke har kontrol over, og som ikke har API-adgang)

Brug af DESCRIBE-forespørgslen sikrer, at kun kolonner, der eksisterer, indsættes.

$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() er vores indpakning omkring MDB2.

Og det giver dem selvfølgelig mulighed for at udfylde hele rækken. Hvis du har begrænsede kolonner (auto-increment id'er og sådan), bliver du nødt til at filtrere dem ud af formulardataene...




  1. Sådan tilføjes total række i MySQL

  2. DBCC_OBJECT_METADATA-låsen

  3. TreeView-kontrol med underformularer

  4. pip install MySQL-python returnerer ude af stand til at finde vcvarsall.bat