Повече заявки означават повече време, така че ако актуализирате всяко поле поотделно (а не ред по ред), това ще отнеме значително повече време.
Също така може да искате да приложите филтър към изпратените стойности, за да сте сигурни, че няма поле, което не искате да се актуализира.
Например, ако имате таблица с потребители, които са имали салда по акаунти, изброени срещу тях:
id | user | credit
==========================
1 | John Smith | 50
Ако можех да изпратя формуляр на вашия манипулатор на формуляри, тъй като полето "кредит" ще се покаже в SHOW COLUMNS...
запитване, мога да ви изпратя изпратено POST чрез формуляр, предназначен да се използва за промяна на името си, с $_POST['user'] = "Mike Rowe"
и $_POST['credit'] = 9999
, и бихте променили горното на:
id | user | credit
==========================
1 | Mike Rowe | 9999
АКТУАЛИЗИРАНЕ: Препоръчително решение
Вместо да вярвате, че имената на полетата в базата данни са безопасни за използване за обработка на заявка като тази, защо да не имате свой собствен масив от полета, които могат да се редактират и просто да ги прегледате?
$editable_fields = array(
'pg_url' ,
'pg_title' ,
...
);
$form_values = array();
$sql_pattern = array();
foreach( $editable_fields as $k ){
if( $k != 'pg_id'
&& isset( $_POST[$k] ) ){
$form_values[$k] = $_POST[$k];
// NOTE: You could use a variant on your above code here, like so
// $form_values[$k] = set_variable( $_POST , $k );
$sql_pattern[] = "$k = ?";
}
}
$sql_pattern = 'UPDATE root_pages SET '.implode( ' , ' , $sql_pattern ).' WHERE pg_id = ?';
# use the instantiated db connection object from the init.php, to process the query
$result = $connection->run_query($sql_pattern,array_merge(
$form_values ,
$_POST['pg_id']
));
ЗАБЕЛЕЖКА:Този код не е тестван и не е начинът, по който обикновено действам, така че го използвайте като ръководство, а не като библия...