Eu costumo ter uma classe estendendo PDO, mas minha classe é bem personalizada. Se eu conseguir limpar e testar, postarei mais tarde. Aqui está uma solução para o seu sistema, no entanto.
function dbSet($fields, &$values) {
$set = '';
$values = array();
foreach ($fields as $field) {
if (isset($_POST[$field])) {
$set .= "`$field` = ?,";
$values[] = $_POST[$field];
}
}
return rtrim($set, ',');
}
$fields = explode(" ","name surname lastname address zip fax phone date");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d'];
$query = "UPDATE $table SET ".dbSet($fields, $values).", stamp=NOW() WHERE id=?";
$values[] = $id;
$dbh->prepare($query);
$dbh->execute($values);
Isso pode não ser perfeito e pode usar ajustes. Leva em conta que
$dbh
é configurado com uma conexão PDO. Pendente de quaisquer pequenos problemas de sintaxe que fiz, isso deve funcionar. EDITAR
Realmente, eu acho que eu iria para o Doctrine ORM (ou outro ORM). Conforme você configura o modelo e adiciona toda a validação lá, é tão simples quanto:
$table = new Table();
$table->fromArray($_POST);
$table->save();
Isso deve preencher o conteúdo facilmente. Isso é claro com um ORM, como o Doctrine.
ATUALIZADO
Fiz alguns pequenos ajustes no primeiro código, como colocar
isset
de volta e usando rtrim
sobre substr
. Indo trabalhar para fornecer uma maquete de uma classe PDO Extension, basta traçar o caminho para fazê-lo e fazer alguns testes de unidade para garantir que funcione.