I've always wrote 2 functions... one for insert and one for edit, for example
ADD:
function add_bank($vars = array()) {
$sql = "INSERT INTO BANK (Name, Var1, Var2, ...., Var7) VALUES (?, ?, ?, ..., ?)";
$name = isset($vars[Name]) ? $vars[Name] : "";
...
$var7= isset($vars[Var7]) ? $vars[Var7] : "";
$rs = $db->prepare($sql);
$rs->execute(array($name, ..., $var7));
$id = $db->lastInsertId();
return $id;
}
EDIT:
function edit_bank($idBank, $vars = array()) {
$sql = "UPDATE BANK SET ";
$v = array();
if ( isset($vars['Name']) ) {
$sql .= "Name = ?, ";
$v[] = $vars['Name'];
}
...
..
if ( isset($vars['Var7']) ) {
$sql .= "Var7= ?, ";
$v[] = $vars['Var7'];
}
$sql = rtrim($sql, ", ");
$sql .= " WHERE ID = ?";
$v[] = $idBank;
$rs = $db->prepare($sql);
$rs->execute($v);
}
Now, everytime I need to add new fields to my table, i've always to edit both function...
I'd like to reduce the problem, editing only the edit_bank function and mantain the add_bank function.
I was thinking about a solution like this:
function add_bank($vars = array()) {
$sql = "INSERT INTO BANK";
$rs = $db->prepare($sql);
$rs->execute();
$id = $db->lastInsertId();
edit_bank($id, $vars);
return $id;
}
but it seems the query: $sql = "INSERT INTO BANK"; is not valid. Any solution?
VALUESto the query. A correct query goes like you have above:INSERT INTO BANK (Name, Var1, Var2, ...., Var7) VALUES (?, ?, ?, ..., ?)