sql >> Databasteknik >  >> RDS >> Mysql

skapa en dynamisk php-infogning i mysql-funktionen?

Det här är vad vi använder för att göra en liknande sak (att infoga i en tabell som vi inte har kontroll över och som inte har någon API-åtkomst)

Genom att använda DESCRIBE-frågan säkerställs att endast kolumner som finns infogas.

$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() är vårt omslag runt MDB2.

Och naturligtvis gör det att de kan fylla i hela raden. Om du har begränsade kolumner (id för automatisk inkrementering och sådant), måste du filtrera bort dem från formulärdata...




  1. Importera större SQL-filer till MySQL

  2. 10 tekniker för att skapa formulär i Microsoft Access

  3. Kan jag köra vilket program som helst utanför mysql genom mysql-utlösare?

  4. Hur man använder SQL SUM-funktionen