создание динамической вставки PHP в функцию MySQL? - PullRequest
0 голосов
/ 24 февраля 2010

У меня есть сообщение с МНОЖЕСТВОМ переменных, и мне было интересно, есть ли какой-нибудь способ вставки информации в mysql динамически, вместо того, чтобы печатать все вручную, так как переменные записи меняются в зависимости от того, что выбирает пользователь.

1 Ответ

4 голосов
/ 24 февраля 2010

Это то, что мы используем для подобных действий (вставка в таблицу, над которой мы не имеем никакого контроля, и которая не имеет доступа к 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) . ')';

edit: DB () - наша оболочка для MDB2.

И, конечно, это позволяет им заполнить весь ряд. Если у вас есть ограниченные столбцы (идентификаторы автоинкремента и т. Д.), Вам придется отфильтровать их из данных формы ...

...