Добавление данных в sql с динамической формы.

A
На сайте с 18.02.2009
Offline
46
625

Есть форма, где input'ы динамически "образуются". Как данные с добавить в базу, когда каждый раз разное кол-во input'ов. :popcorn:

Аккаунты на торрент-трекеры. () Тут дают деньги!!! (http://Pop-Bazar.com/registration.php?ref=2115)
SI
На сайте с 03.12.2007
Offline
130
#1

http://ru.wikipedia.org/wiki/Insert_(SQL)


INSERT INTO <название таблицы> ([<Имя столбца>, ... ])
VALUES (<Значение>, ...)
-= Онлайн сервисы =-
dkameleon
На сайте с 09.12.2005
Offline
386
#2
$str = mysql_real_escape_string(serialize($_POST));
// и инсертим в базу.

универсальное решение :)

Дизайн интерьера (http://balabukha.com/)
L
На сайте с 07.12.2007
Offline
351
#3

Name у этих input должны совпадать с полями в таблице MySQL.

Тогда обрабатывать присланные поля форму и динамически формировать sql-запрос, не забывая фильтровать sql-injection.

Лучше перебирать в цикле по полям sql-таблицы, примерно так:


$Tbl = ''; // Имя таблицы в БД
$SQL_BASE = ""; // Имя БД
$list_f = mysql_list_fields($SQL_BASE, $Tbl, $conn_id); // Список полей Таблицы
$n = mysql_num_fields($list_f); // Число строк в результате предыдущего запроса
for ($i=0, $sql=''; $i<$n; $i++) { // По числу полей таблицы $Tbl
$name_f = mysql_field_name($list_f, $i); // Имя поля таблицы
if (isset($_POST[$name_f])) { // Значение этого поля прислано?
$value = $_POST[$name_f]; // Присланное значение этого поля
$sql .= $name_f." = '".addslashes($value)."', "
}
. . . .
}
После формирования проверить, что sql!='' (что-то прислано), убрать последнюю ',' и сделать запрос "insert into $Tbl $sql" для вставки (или update, но для этого надо знать id записи)

PS: ***91; и ***93; - это [ и ] соответственно, форум их коверкает.

Ида, форма присылается по POST, как видите...

dkameleon
На сайте с 09.12.2005
Offline
386
#4
Ladycharm:
addslashes

ай-ай-ай :) двойка вам по безопасному программированию :)

http://raz0r.name/vulnerabilities/sql-inekcii-svyazannye-s-multibajtovymi-kodirovkami-i-addslashes/

Dreammaker
На сайте с 20.04.2006
Offline
570
#5
dkameleon:
двойка вам по безопасному программированию

оно уже очень давно заделано. :) Конечно, могут быть дремучие хостеры, но тут уж вопрос не к addslashes и mysql_real_escape_string ...

А если по теме то, что только люди не придумывают, чтобы не использовать NoSQL базы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий