У меня есть сообщение с большим количеством переменных, и мне было интересно, есть ли способ вставить информацию в 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) . ')';
edit: DB () – наша оболочка вокруг MDB2.
И, конечно, это позволяет им заполнить всю строку. Если у вас ограниченные столбцы (идентификаторы автоинкремента и т. Д.), Вам придется отфильтровать их из данных формы …