Не делайте такие длинные методы. Не копипасте. Отделяйте построение запроса от данных. И не надо все делать static.
public static function saveStaff($options)
{
if (self::isValidStaff($options)) {
$staffFields = self::getFilledStaffFileds($options);
$qb = new QueryBuilder( Db::getConnection() );
$qb->where('id = 1')->update('staff', $staffFields);
}
}
public static function getFilledStaffFileds($options)
{
$staff = [];
if ($options['director_surname']) {
$staff['surname'] = $options['director_surname'];
}
if ($options['director_surname']) {
$staff['name'] = $options['director_name'];
}
if ($options['director_surname']) {
$staff['ot4'] = $options['director_ot4'];
}
if ($options['director_surname']) {
$staff['oklad'] = $options['director_oklad'];
}
if ($options['director_surname']) {
$staff['date_start'] = $options['director_date_start'];
}
return $staff;
}
function static function isValidStaff($options)
{
return isset($options['surname'])
|| isset($options['name'])
|| isset($options['ot4'])
|| isset($options['oklad'])
|| isset($options['date_start']);
}
И использовать какой-нибудь построитель запросов, типа такого:
class QueryBuilder {
protected $db;
protected $where = '';
public function __construct($db) {
$this->db = $db;
}
public function where($where)
{
$this->where = trim($where);
return $this;
}
public function update($table, $params)
{
$values = [];
foreach ($params as $key => $value) {
$values[] = "`{$key}` = :{$key}";
}
$sql = 'UPDATE `' . $table . '` SET ' . join(', ', $values);
if ($this->where) {
$sql .= ' WHERE ' . $this->where;
}
$result = $this->db->prepare($sql);
foreach ($params as $key => $value) {
$result->bindParam(':' . $key, $value, PDO::PARAM_STR);
}
return $result->execute();
}
}
P. S. Лучше пользоваться готовыми компонентами.
P. P. S. Наверняка есть опечатки, набирал без IDE.