|
|
|
| Идея следующая: задавать массив, где перечислены имена полей из формы, они же - поля в БД, и формировать на основе данных из формы один SQL запрос.
Я вытащил некий код из книжки, но он не работает, т.к. юзает непонятную мне функцию какого то внешнего модуля: $db->prepare
$fields = array('field1','field2','field3','field4');
$updateFields = array();
$updateValues = array();
foreach ($fields as $field)
{
$updateFields[] = "$filed=?";
$updateValues[] = $_POST[$field];
}
$st = $db->prepare('UPDATE vega_pages_data SET '.implode(',',$updateFields).' WHERE id = '.$this->data->id.');
|
Кто нибудь делал такое? Может есть нормальное решение без обращений к внешним модулям? | |
|
|
|
|
|
|
|
для: Zilog
(19.02.2009 в 19:26)
| | Без обращения к, как Вы их называете, "внешним модулям" - нет. | |
|
|
|
|
|
|
|
для: Loki
(19.02.2009 в 22:38)
| | >Без обращения к, как Вы их называете, "внешним модулям" - нет.
Да? А я вот сделал. Код не красавец, но работает без изъянов. | |
|
|
|
|
|
|
|
для: Zilog
(19.02.2009 в 22:53)
| | показывайте | |
|
|
|
|
|
|
|
для: Loki
(19.02.2009 в 23:35)
| |
$fields = array('field1','field2','fieldN');
foreach ($fields as $field) $d = $d.$field.'= "'.$_POST[$field].'", ';
$d = substr($d,0,(strlen($d)-2));
$sql = "UPDATE table SET ".$d." WHERE id = ".$this->data->id;
|
нехватает только вставиить в цикл проверку на содержимое передаваемых переменных.
но это к теме уже не относится. | |
|
|
|
|
|
|
|
для: Zilog
(20.02.2009 в 01:36)
| | ну не знаю стоит ли так вообще делать.
<?
$fields = array('field1','field2','fieldN');
for($a=0, $b=sizeof($fields), $_R=array();
$a<$b;
$_R[] = '`'.$fields[$a].'`="'.$_POST[$fields[$a]].'"',$a++
);
$sql = "UPDATE table SET ".implode(',',$_R)." WHERE id = ".$this->data->id;
?>
|
| |
|
|
|
|
|
|
|
для: а-я
(20.02.2009 в 01:47)
| | Ну вот, ещё одна реализация. Как хорошо :)
А в чём минус моего варианта? Не то, что бы я от него в восторге - хочу слабые места понять. | |
|
|
|
|
|
|
|
для: Zilog
(20.02.2009 в 01:36)
| | Ну собственно чуда не произошло. Вы только что начали писать "внешний модуль" для работы с БД. | |
|
|
|