Mysql
 sql >> база данни >  >> RDS >> Mysql

създаване на динамично php вмъкване във функцията mysql?

Това е, което използваме, за да направим подобно нещо (вмъкване в таблица, върху която нямаме контрол и която няма достъп до API)

Използването на заявката 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) . ')';

редактиране:DB() е нашата обвивка около MDB2.

И разбира се това им позволява да попълнят целия ред. Ако имате ограничени колони (идентификатори за автоматично увеличаване и други), ще трябва да ги филтрирате извън данните от формуляра...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel eloquent получава най-често срещаната стойност в колона на база данни

  2. Как да използвам неподписани int/long типове с Entity Framework?

  3. PHP PDO::lastInsertId() връща 0

  4. Как да създадете съхранена процедура в MySQL

  5. Mysql връща неправилен bigint резултат с една, много странна грешка