[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разные переменные для одного запроса
XELAD
Здравствуйте.

Предыстория:
В N-ной программе сохранение происходит скопом: в POST-запрос запихивается абсолютно всё, что нужно сохранить, а это N-ные объемы текстов. Захотелось их разделить и сохранять только те, что изменились. Итак, программа отдаст php-скрипту набор переменных, скрипт их распределит в mySQL-запрос. С учётом разных переменных, писать множество вариантов одного mySQL-запроса - не вариант.

Задача:
Пройтись по переменным в $_POST , те, чьи имена подходят под определенный список, записать в mySQL-запрос.

Дальше идёт отсебятина или "как я это вижу":
$smth = $_POST['smth'];
$my_str = "UPDATE table_name SET ";
for($i in $_POST)
{
if($i == "abc" || $i == "def" || $i == "xz123")
{
$my_str += $i + "=" + $_POST[$i] + ",";
}
}

$my_str += " WHERE smth='$smth'";
mysql_query($my_str);


В конечном счёте хочется получить примерно это:
mysql_query("UPDATE table_name SET abc='".$_POST['abc']."', def='".$_POST['def']."', xz123='".$_POST['xz123']."' WHERE ID='$id'");

Буду очень признателен за помощь и нечтение нотаций (я знаю, что код выше неправильный).
sergeiss
Во-первых, полученные через ПОСТ и ГЕТ данные надо обязательно экранировать перед вставкой в запрос. Иначе ты получаешь целые ворота для SQL-инъекции.
Во-вторых... "Как я это вижу" (с) :) (код надо дорабатывать!!!)

$allowed = array( 'abc', 'def');
$set = array();
foreach( $_POST as $key => $val )
{
if( in_array( $key, $allowed) )
{
$set[] = "$key = ".$val; // тут как раз нужна защита от инъекции и кавычки
}
}

$sql = 'update .... set '.implode( ', ', $set).' where .....';


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
XELAD
sergeiss
Немного допилил и заработало. А экранирование и прочие премудрости я опустил, как неосновные задачи. smile.gif
Большое спасибо за вашу помощь!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.